递归收集Python / Django中的子项
发布时间:2020-12-16 22:52:02 所属栏目:Python 来源:网络整理
导读:我有一个这样的模型. class Person(models.Model): name = models.CharField(max_length=55,null=False,blank=False) parent = models.ForeignKey('Person.Person',blank=False) 我想创建一个递归函数,最终将返回整个人家谱的字典. 所以例如 first_person =
我有一个这样的模型….
我想创建一个递归函数,最终将返回整个人家谱的字典…. 所以例如……
GetChildren是我的递归函数,它将不断调用GetChildren,直到没有更多的子项……它应该返回一个包含所有这些子项的字典,如此…
我从来没有善于递归,有人会介意如何解决这个问题…… 最佳答案
这种实现应该有效
请注意,这将占用与人员一样多的数据库调用.如果遇到性能问题,可以尝试将所有数据提取到内存中. 关于递归的思考 考虑递归的一种方法是从基本情况开始 – 即递归结束的地方.在您的情况下,我们知道如果一个人没有孩子,家谱如何:
在有了基本案例之后,考虑一下你必须执行递归的问题. 在你的情况下,这将是有孩子的父母,但没有大孩子.我们知道每个孩子的家谱应该如何看 – 这只是基本情况!这引出了我们返回父级名称的解决方案,以及每个孩子的家谱的列表.导致类似于:
编辑 Django自动为ForeignKey生成反向关系.
见https://docs.djangoproject.com/en/1.9/ref/models/fields/#foreignkey (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |