一尘不染

在Django管理员中嵌套内联?

python

好吧,我的设计很简单。

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-
很好。但是无法在同一位置查看属于给定更新的所有帖子,这又意味着您不能在更新内进行发布。对于最终用户而言,这确实很令人困惑。

救命?


阅读 141

收藏
2020-12-20

共1个答案

一尘不染

到目前为止,在django.contrib.admin中还没有“内置”方式来嵌套嵌套的内联(内联在内联内)。通过拥有自己的ModelAdmin和InlineModelAdmin子类来启用这种功能,可以完成类似的事情。请参阅此故障单上的修补程序http://code.djangoproject.com/ticket/9025,以获取有关如何实现此故障的想法。您还需要提供自己的模板,这些模板将在顶级内联和子内联上嵌套嵌套迭代。

2020-12-20