модели My Django выглядитИспользование Django ORM запрос Как аннотировать, если несколько уровней внешнего ключа иерархии существует
class Parent(models.Model):
name = models.CharField(('name'), max_length=30)
class Child(models.Model):
parent = models.ForeignKey(Parent)
name = models.CharField(('name'), max_length=30)
class GrandChild(models.Model):
child = models.ForeignKey(Child)
name = models.CharField(('name'), max_length=30)
-> To Get Number of Childs for parent following query does
Parent.objects.annotate(childs=Count('Child')).values('childs')
-> To Get Number of Grand Childs for parent following query does
Parent.objects.annotate(childs=Count('child')).annotate(grandchilds=Count('child__grandchild'))
Но как я могу получить подсчет количества Чайлдс и числа великих Чайлдс для каждого родителя
Такие вещи решаются с помощью рекурсии, например, вы создаете метод get_children, который выполняет итерацию над каждым дочерним элементом и вызывает их get_children, пока больше не нужно звонить. –