Django 模型数 children 和 grand children

Django models count children and grand children

在 Django 模型中,我需要帮助选择 children 的计数和 grand children 的计数。 我的模特:

Parent:

Child:
 parent = models.Foreignkey(Parent)
GrandChild:
 child = models.Foreignkey(Child)

我做到了

Parent.objects.annotate(num_child =Count('child’), num_grandchild=Count('child__grandchild'))

有了这个,我得到 num_child 与 num_grandchild

的值完全相同

你能帮忙吗

我认为您必须在 Count() 上设置 distinct

q = Parent.objects.annotate(num_child=Count('child', distinct=True), num_grand_child=Count('child__grandchild', distinct=True))

https://docs.djangoproject.com/en/2.2/topics/db/aggregation/#combining-multiple-aggregations