Django管理中的嵌套内联?

2024-06-17 14:57:30 发布

您现在位置: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')

有没有一种简单的方法允许用户在一个页面上创建一个更新?

我想让用户能够进入管理界面,添加新的更新,然后在编辑更新时添加一个或多个帖子,每个帖子都有一个或多个媒体项。此外,我希望用户能够在更新中重新排序文章。

我当前的尝试在admin.py中有以下内容:

class MediaInline(admin.StackedInline):
    model = Media

class PostAdmin(admin.ModelAdmin):
    inlines = [MediaInline,]

这让用户添加一个新的Post项目,选择相关的更新,将媒体项目添加到其中,然后单击save-这很好。但是没有办法在一个地方看到所有属于给定更新的帖子,这反过来意味着您不能在更新中查看更多的帖子。对于最终用户来说,这真的很让人困惑。

帮忙?


Tags: to用户modeladminmodelsupdatepostmedia
3条回答

现在有了这个鸡蛋,这是另一个答案中提到的相关补丁的整理:

https://github.com/theatlantic/django-nested-admin

我也刚碰到这个问题。。。似乎这个包含对嵌套内联特性(https://code.djangoproject.com/ticket/9025#no2)的请求的线程已经用进一步的信息更新了。

一款名为“django super inline”的定制应用已经发布。这里有更多细节:https://github.com/BertrandBordage/django-super-inlines

安装和使用说明如下。

希望这对任何人都有用。

enter image description here

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

相关问题 更多 >