我有一个带有自引用外键关系的模型:
class Person(TimeStampedModel):
name = models.CharField(max_length=32)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
现在我想获得一个人的所有多级孩子。如何为其编写 Django 查询?它需要表现得像递归函数。
您始终可以向模型添加递归函数:
编辑:根据 SeomGi Han 更正
def get_all_children(self, include_self=True):
r = []
if include_self:
r.append(self)
for c in Person.objects.filter(parent=self):
_r = c.get_all_children(include_self=True)
if 0 < len(_r):
r.extend(_r)
return r
(如果您有大量递归或数据,请不要使用此...)
仍然按照 errx 的建议推荐 mptt。
编辑:2021 年,因为这个答案仍然受到关注:/
Use Django 树查询 https://github.com/matthiask/django-tree-queries反而!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)