好吧,我的设计很简单。
class Update(models.Model): pub_date = models.DateField() title = models.CharField(max_length=512) class Post(models.Model): update = models.ForeignKey(Update) body = models.TextField() order = models.PositiveIntegerField(blank=True) class Media(models.Model): post = models.ForeignKey(Post) thumb = models.ImageField(upload_to='frontpage') fullImagePath = models.ImageField(upload_to='frontpage')
是否有一种简单的方法允许用户在一页上全部创建更新?
我想要的是用户能够转到管理界面,添加新的更新,然后在编辑更新时添加一个或多个帖子,每个帖子都有一个或多个Media项目。另外,我希望用户能够在更新内重新排列帖子。
我当前的尝试在admin.py中包含以下内容:
class MediaInline(admin.StackedInline): model = Media class PostAdmin(admin.ModelAdmin): inlines = [MediaInline,]
这使用户可以添加一个新的Post项,选择相关的Update,向其添加Media项,然后单击Save-很好。但是无法在同一位置查看属于给定更新的所有帖子,这又意味着您不能在更新内进行帖子发布。对于最终用户而言,这确实很令人困惑。
到目前为止,在django.contrib.admin中还没有“内置”方式来嵌套嵌套的内联(内联在内联内)。通过拥有自己的ModelAdmin和InlineModelAdmin子类来启用这种功能,可以完成类似的事情。请参阅此故障单上的补丁http://code.djangoproject.com/ticket/9025,以获取有关如何实现此故障的想法。您还需要提供自己的模板,这些模板将在顶级内联和子内联上嵌套嵌套迭代。