Я написал карусельный плагин для Django-CMS, который отображает скриншоты. Базовая модель имеет некоторые параметры карусельного связаны (высота, анимации стиль и т.д.), а также ForeignKey
к ScreenshotGroup
:Как адаптировать Django ForeignKey к многоразовому приложению?
class ScreenshotGroup(models.Model):
name = models.CharField(max_length=60)
screenshots = models.ManyToManyField(Screenshot, through="ScreenshotGroupMember")
class Screenshot(models.Model):
name = models.CharField(max_length=60)
desc = models.TextField(_("description"), blank=True)
img = models.ImageField(upload_to='img/')
class CarouselPluginModel(CMSPlugin):
group = models.ForeignKey(ScreenshotGroup)
height = models.IntegerField()
...
Метод вид карусели содержит:
context['item_list'] = instance.group.screenshots.all()
(На самом деле, поскольку я использую Django-CMS, это в cms_plugins.py
render
методе, а не view
метода)
шаблон относится к полям скриншота с помощью:.
{% for item in item_list %}
{{ item.name }}
{{ item.desc }}
...{{ item.img }}...
{% endfor %}
Мой вопрос: Я хочу обобщить свой плагин для карусели, чтобы повторно использовать его в других проектах, так что это не зависит от модели Screenshot
. Я могу заменить содержимое цикла шаблона for
на include
, чтобы каждый проект мог указать, как отображать элемент в карусели. Но как я могу обобщить CarouselPluginModel
ForeignKey
?
В любом конкретном приложении мне нужен только один тип модели (ScreenshotGroup
в моем примере). Я не хочу, чтобы консоль администратора позволяла включать любые другие модели.
Спасибо!