gpt4 book ai didi

django - Django 管理中具有递归自关系的模型

转载 作者:行者123 更新时间:2023-12-01 15:05:52 25 4
gpt4 key购买 nike

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

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')

文章在这里充当一个节点——它可以有很多 child (如果提供的话)和一个父节点(如果有的话)。但是,当我在 Django 的管理中注册我的模型时,我的子条目显示为“一对一”——在这两种情况下都有选择框,但在后者中无法选择多个值。

如何通过管理面板将 child 添加到此文章对象并稍后列出它们?

我想要的是: 而不是正常的下拉菜单。

谢谢。

最佳答案

您只需要一个字段parent,并将subarticles 作为related_name 来提供反向查找:

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.parent

如果你想得到它的 child ,你使用:

article.subarticles

在管理界面中显示子文章 最简单的方法是使用InlineModelAdmin :

class ArticleInline(admin.StackedInline):
model = Article

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

关于django - Django 管理中具有递归自关系的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7615351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com