我有3个模型-
class A(models.Model):
...
b = models.ManyToManyField(B, related_name="related_a")
class B(models.Model):
...
class Entries(models.Model):
...
b = models.ForeignKey(B, related_name="entries")
我需要遍历所有A
对象,并显示A中每个entries
的{{1}}计数以及A中的其他字段。最有效的方法是这样做吗?
答案 0 :(得分:1)
您可以通过2个查询完成此操作:
from django.db.models import Count, Prefetch
qs = B.objects.annotate(entry_count=Count('entries'))
a_list = A.objects.prefetch_related(Prefetch('b', queryset=qs))
我希望所有相关名称正确。您可以像这样访问计数:
for a in a_list:
for b_item in a.b:
print(b_item.entry_count)