【发布时间】:2011-07-19 23:50:01
【问题描述】:
我在previous question 中询问了一些关于 Django 继承的问题。现在我正在尝试弄清楚如何让管理界面使用它。
如果我有这样的模型:
class ContentItem(models.Model):
title = models.CharField(max_length=1000)
page_order = models.IntegerField()
last_update_date = models.DateTimeField(default=datetime.now())
class Meta:
abstract = True
ordering = ['page_order', 'last_update_date', 'title']
class LinkContent(ContentItem):
url = models.URLField()
link_text = models.CharField(max_lenth=1000)
class TextContent(ContentItem):
text = models.CharField()
class VideoContent(ContentItem):
title = models.CharField()
video_file = models.FieldField(upload_to = 'videos')
class Page(models.Model):
contents = models.ManyToManyField(ContentItem)
title = models.CharField()
假设我正在使用 django-model-utils,如上一个问题的答案中所述。
如何使管理界面根据子类显示正确的内联?我希望为该类型显示正确的内联。因此,如果我在内容中有 3 个项目,一些文本、一个链接和一个视频。然后,当我在管理界面中查看该 Page 时,我想查看每个项目的内联表单。
这是如何实现的?
另外,我将如何处理向关系添加新事物?理想情况下,当用户想要添加新的 ContentItem 时,他们会被询问需要添加什么样的内容项。然后该内容类型的添加表单将在弹出窗口中打开。因此,如果我指定要添加 VideoContent,则会弹出一个让我上传视频的弹出窗口。如果我指定我想要 TextContent,我会在输入文本的地方弹出一个窗口。
Page 模型的更改表单似乎需要特别考虑。有关如何处理此问题的任何建议?
【问题讨论】:
标签: python django django-admin django-templates