【发布时间】:2019-01-12 22:19:42
【问题描述】:
我有这样的关系模型:
Parent(models.Model):
pass
Child(models.Model):
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
Grandchild(models.Model):
child = models.ForeignKey(Child, on_delete=models.CASCADE)
我正在尝试找到一种方法来用孙子的总数来注释父查询集。
例如,假设有 2 个父母:(A, B)。
A 有 3 个孩子:(A.a, A.b, A.c)。
A.a 有 1 个孙子,
A.b 有 2 个孙子,
A.c 有3个孙子,
B 有 2 个孩子:(B.a, B.b)。
B.a 有 2 个孙子。
B.b 有 3 个孙子。
我想用每个父母的每个孩子的孙子计数的聚合来注释父查询集。例如。与Min 聚合为A:1, B:2 或与Avg 聚合为A:2, B:2.5
我相信这可能需要.extra 来完成,但我不确定。
如果聚合函数是硬编码的就好了,即Parent.objects.all().annotate_min_ngc_per_c(),但请尽你所能解释我可以使用多个聚合进行复制。
【问题讨论】:
标签: django django-models