我为 Django-CMS 编写了一个显示屏幕截图的轮播插件。底层模型有一些与轮播相关的参数(高度、动画风格等),以及一个ForeignKey
to ScreenshotGroup
:
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
模型。我可以用 an 替换模板for
循环的内容,include
以允许每个项目指定如何在轮播中显示项目。但是我如何概括CarouselPluginModel
's ForeignKey
?
在任何特定应用程序中,我只希望允许一种类型的模型(ScreenshotGroup
在我的示例中) - 我不希望管理控制台允许包含任何其他模型。
谢谢!