Django'中的递归自关系模型;s管理员

Django'中的递归自关系模型;s管理员,django,django-admin,Django,Django Admin,假设我们有一个具有两个自递归关系的模型: class Article(Item): # Item in this case is an abstract class date = models.DateField() parent = models.OneToOneField('self', null=True, blank=True) subatricles = models.ForeignKey('self', null=True, blank=True, relat

假设我们有一个具有两个自递归关系的模型:

class Article(Item): # Item in this case is an abstract class
    date = models.DateField()
    parent = models.OneToOneField('self', null=True, blank=True)
    subatricles = models.ForeignKey('self', null=True, blank=True, related_name='subs')
文章在这里充当一个节点——它可以有许多子节点(如果提供)和一个父节点(如果有)。然而,当我在Django的admin中注册我的模型时,我的子矩阵显示为“一对一”——在这两种情况下都有选择框,但在后一种情况下,无法选择多个值

如何通过“管理”窗格将子对象添加到此文章对象,并在以后列出它们

我想要的是: 而不是正常的下拉列表

谢谢。

您只需要一个字段父项,子节作为相关名称,即可提供反向查找:

class Article(Item): # Item in this case is an abstract class
    date = models.DateField()
    parent = models.ForeignKey('self', null=True, blank=True, related_name='subarticles')
因此,如果您有一个article对象,并且希望获取其父对象,请使用:

article.parent
如果要获取其子项,请使用:

article.subarticles
在管理界面中,要显示子节,最简单的方法是使用:


非常感谢您的解释-这对我帮助很大。不过,我有一个小问题(我希望是最后一个问题)。如果我指定要显示的字段:
fieldset=[(无,{'fields':…'parent','subtricles']})
Django向我显示
在…'ArticleAdmin.fieldset[0][1]['fields']'是指表单中缺少的字段“subarticles”。
如何避免这种情况?我希望能够将现有文章添加到文章的子项中,并从多选框中选择这些子项。@Up-我需要类似于此处的解决方案:对于Django中的许多问题,管理员:您可以将子项添加到文章中,这就是“内联”“是给你的。顺便说一下,如果您只有一个字段集,则根本不需要指定它。把“字段集”完全从你的管理员那里拿出来,它现在工作了吗?
class ArticleInline(admin.StackedInline):
    model = Article

class ArticleAdmin(admin.ModelAdmin):
    inlines = [
        ArticleInline,
    ]