Django中的嵌套注释

时间:2014-08-19 12:16:11

标签: django django-models django-views django-queryset django-aggregation

我有三个模特

class ModelA(models.Model):
    name = CharField(max_length=100)

class ModelB(models.Model):
    modela = ForeignKey(ModelA)

class ModelC(models.Model):
    modelb = ForeignKey(ModelB)

如何使用“关联的”ModelC对象的数量打印所有ModelA对象?

输出:

name, num model c objects
======
Some name, 17
Another name, 3

我尝试过像这样从ModelA创建一个查询集:

ModelA.objects.all().values('name').annotate('modelb_set__modela_set')

但它不起作用。

1 个答案:

答案 0 :(得分:1)

您应在此处使用Count并在查询中引用ModelC

from django.db.models import Count
ModelA.objects.all().values('name').annotate(num_model_c_objects=Count('modelb__modelc'))