通常,如果您在创建字段(例如选择列表)或具体的 Django 模型(如您所做的那样)时需要更多信息,您可以使用initialize_type
它。
class DownloadContent(models.Model):
@classmethod
def initialize_type(cls):
cls.add_to_class('files', ... your model field ...)
使用MediaFileContent
此方法添加type
选择器:
https://github.com/feincms/feincms/blob/master/feincms/content/medialibrary/models.py#L58
但是,在您的情况下,这不起作用,因为您还必须through
动态创建模型。原因是对于每个具体的DownloadContent
,你需要另一个具体的DownloadContentFiles
模型。
您可以通过使用type
内置动态创建新的具体类来实现这一点(当与不同的 CMS 基础(例如和)一起DownloadContentFiles
使用时,请注意名称冲突)。DownloadContent
page.Page
elephantblog.Entry
也许是实现您想要的更简单的方法:
Downloads
在某处添加模型,然后将其添加files
ManyToManyField
到此类
DownloadContent
唯一包含一个ForeignKey(Downloads)
是的,你需要另一个模型。这可能是值得的,因为您可以为 构建更好的编辑界面Downloads
,并且页面编辑器也得到了简化,因为您只需选择一个已经存在的Downloads
模型即可在页面上显示它们。