Django的计数相关的对象
问题描述:
如何可以计数在Django有关的对象(在小于Ñ查询,其中Ñ是物体的数量)。为了澄清,假设我有表A和B。每个B连接到恰好一个A。方法我试过:Django的计数相关的对象
A.objects.select_related().filter(attr=val)
A[i].B_set.count()
当然,对于每一个[I]我想找出乙对象数量的Django执行一个查询。
所以问题是 - 有没有一种方法来优化?
答
没有尝试过多少查询被执行,但djano方式应该使用annotate()
类似:
q = A.objects.select_related().annotate(num_B=Count('B'))
print A[0].num_B
答
我来回答我的问题:)如果一个对象被查询是这样的:
A.objects.select_related().filter(atrr=val).annotate(n_b=models.Count('B'))
这创建了很长的查询,但至少只有一个。
这可能是一个愚蠢的问题,但我得到的错误说全球名称“计数”没有定义时,这样做。 – Seaux 2012-09-29 03:35:24
nvm,找到答案:from django.db.models import Count – Seaux 2012-09-29 03:38:01