Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django管理中的嵌套内联线?_Python_Django_Django Models_Django Admin - Fatal编程技术网

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