Django Admin根据类的类型更改内联管理员表单
我在前一个问题中询问了有关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。
我将如何使管理界面基于子类显示正确的内联? 我想要正确的内联显示类型。 所以如果我有三项内容,一些文字,一个链接和一个视频。 然后,当我在管理界面中查看该页面时,我想查看每个项目的内联表单。
这是如何完成的?
另外,我将如何处理向关系添加新事物? 理想情况下,当用户想要添加新的ContentItem时,会询问他们需要添加什么样的内容项目。 然后,该内容类型的添加表单将在弹出窗口中打开。 所以如果我指定我想添加VideoContent,那么我会弹出一个让我上传视频的视频。 如果我指定了我想要的TextContent,我会弹出一个输入文本的位置。
对于Page模型的更改形式,似乎需要特别考虑。 有关如何处理此问题的任何建议?
所以事实证明,如果你使用django-model-utils并且继承。 然后,您可以为每个子类添加内联。 Django管理员将解决它。 它将显示课堂的正确形式。
问题解决了。
链接地址: http://www.djcxy.com/p/65419.html上一篇: Django Admin Changing Inline Admin Form based on class type