复Django滤波器问题

复Django滤波器问题,django,django-models,Django,Django Models,假设我有一节课(简化): 现在我已经实现了函数get_parents,get_all_祖先。有没有一个很好的pythonic方法来实现顶级标签?如果我设计了不同的标签(指向父母),我只会使用get\u all\u parents().filter(children=None) 我的第一个想法是创建一个新函数,该函数将递归地遍历所有父函数,并保存那些没有父函数的函数 但是,过滤器或查询对象是否也可以这样做(代码行更少) 谢谢你的帮助 [编辑] 完成后,它应该是一个分层标记系统。每个标记可以有子标记

假设我有一节课(简化):

现在我已经实现了函数get_parents,get_all_祖先。有没有一个很好的pythonic方法来实现顶级标签?如果我设计了不同的标签(指向父母),我只会使用
get\u all\u parents().filter(children=None)

我的第一个想法是创建一个新函数,该函数将递归地遍历所有父函数,并保存那些没有父函数的函数

但是,过滤器或查询对象是否也可以这样做(代码行更少)

谢谢你的帮助

[编辑]


完成后,它应该是一个分层标记系统。每个标记可以有子标记、父标记,但只保存子标记。我想获得所有顶级标记,这些标记通过许多子/子的子指向我的标记。

由于您得到了
symmetric=False
,我认为这应该可以获得所有没有父标记的标记:

Tag.objects.filter(tag_set=None)
但我必须说,对于等级制度来说,多人关系并不理想。通常,一个元素只能有一个父元素,但可以有多个子元素,即它是从子元素到父元素的外键。按照您的方式,每个元素都可以有多个父元素和多个子元素,因此我不知道层次关系是如何可能的


一如既往,我建议django mptt管理分层数据。

您能举例说明您的数据输出应该是什么样子吗?我的数据输出应该是标签列表,或者更好的是查询集。很容易在它们之间转换,所以对于我的情况,两者都可以。啊,谢谢,我忘记了标签集。django mptt不是我的选择,因为我想要多个父母。所以顶级家长可以像分类一样。
Tag.objects.filter(tag_set=None)