0

我想用 Python 开发一个家谱树。

我正在使用 Django 框架 2.1。

我有一个名为“动物”的模型:

class Animal(models.Model):
    id = models.AutoField(primary_key=True)
    birth_date = models.DateField( null=True)
    id_mother = models.ForeignKey('self', on_delete=models.PROTECT, null=True)

Python 中是否存在从该对象递归生成树的方法?我尝试了 AnyTree 但我只得到一个结果,它只显示当前的动物,但它没有得到他的母亲,也没有得到祖母。

我正在尝试将此代码与 anytree 一起使用来生成树:

from anytree import Node, RenderTree, AsciiStyle

    def generate_tree(beginningId):
        if isinstance(beginningId, int):
            animal = Animal.objects.get(pk=beginningId)
        else:
            animal = Animal.objects.get(pk=beginningId.id)

        animalNode = Node(animal)

        if animal.id_mother is not None:
            generate_tree(animal.id_mother).parent = animalNode

        return animalNode

看法:

def show_tree(request):
tree = generate_tree(221)
nt = RenderTree(tree, style=AsciiStyle())

print(nt)

return render(
    request, 
    'agr/reports/tree.html', 
    {
        'tree': tree, 
        'page_title': page_title
    }
)
4

0 回答 0