Python Django管理中的嵌套内联线?
好的,我有一个相当简单的设计Python Django管理中的嵌套内联线?,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,好的,我有一个相当简单的设计 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.PositiveInteg
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')
有没有一种简单的方法可以让用户在一个页面上创建一个更新
我希望用户能够进入管理界面,添加新的更新,然后在编辑更新时添加一篇或多篇文章,每篇文章都有一个或多个媒体项。此外,我希望用户能够在更新中重新排序帖子
class MediaInline(admin.StackedInline):
model = Media
class PostInline(admin.StackedInline):
model = Post
class PostAdmin(admin.ModelAdmin):
inlines = [MediaInline,]
class UpdateAdmin(admin.ModelAdmin):
inlines = [MediaInline,PostInline]
我当前的尝试在admin.py中包含以下内容:
class MediaInline(admin.StackedInline):
model = Media
class PostAdmin(admin.ModelAdmin):
inlines = [MediaInline,]
这让用户添加一个新的Post项目,选择相关的更新,将媒体项目添加到其中,然后点击save-这很好。但是没有办法在一个地方看到属于给定更新的所有帖子,这意味着你不能在更新中看到roderder帖子。对于最终用户来说,这真的很让人困惑
帮助?到目前为止,在django.contrib.admin中没有“内置”方式来嵌套内联线(内联)。通过拥有自己的ModelAdmin和InlineModelAdmin子类来实现这种功能是可能的。有关如何实现这一点的想法,请参阅此标签上的补丁。您还需要提供自己的模板,这些模板将在顶级内联及其子内联上嵌套迭代。我遇到了与此类似的问题。我的方法是制作一个UpdateAdmin,它包含媒体和帖子的内联线。。。它基本上只是让你有一个所有媒体条目的列表,然后是更新中的所有帖子
class MediaInline(admin.StackedInline):
model = Media
class PostInline(admin.StackedInline):
model = Post
class PostAdmin(admin.ModelAdmin):
inlines = [MediaInline,]
class UpdateAdmin(admin.ModelAdmin):
inlines = [MediaInline,PostInline]
这不是一个理想的解决方案,但它可以快速解决问题。现在有了这个鸡蛋,它是另一个答案中提到的相关补丁的整理:
我也遇到了这个问题。。。似乎这个包含嵌套内联线功能()请求的线程已经更新了更多信息 一款名为“django super inline”的定制应用程序已经发布。详情如下: 安装和使用说明如下 希望这对任何人都有用 对于以下数据结构,我使用:
- 较量
- 裁判
- 参赛者
- 歌手
- 歌曲
admin.py
文件:
from django.contrib import admin
import nested_admin
from .models import Contest, Contestant, Judge, Song, Singer
class SongInline(nested_admin.NestedTabularInline):
model = Song
extra = 0
class SingerInline(nested_admin.NestedTabularInline):
model = Singer
extra = 0
class ContestantInline(nested_admin.NestedTabularInline):
model = Contestant
inlines = [SongInline, SingerInline]
extra = 0
class JudgeInline(nested_admin.NestedTabularInline):
model = Judge
extra = 0
class ContestAdmin(nested_admin.NestedModelAdmin):
model = Contest
inlines = [ContestantInline, JudgeInline]
extra = 0
admin.site.register(Contest, ContestAdmin)
与前面提到的其他应用相比,它的维护似乎更加积极(而且)我认为为它构建自己的视图并将其插入Django admin并使用少量JavaScript使其更具动态性是最容易的。嗯,我不确定这将如何工作。您可以举出任何例子吗?:)django的状态仍然是最新的吗?@andi票已经分配好了,它对django 1.8有效吗?最后一次提交是在2013年。目前,它不支持python 3