说我有几个型号,一个通过外键与另一个相关:
class Tourist(models.Model):
age = models.IntegerField()
class Country(models.Model):
tourist = models.ForeignKey(Tourist)
我知道我可以向游客倒退,了解他一直在使用的国家:
t = Tourist.objects.all()[0]
t.country_set.count()
但有没有办法诠释游客访问过的国家数量?如果我可以做像
那样的话会很酷Tourist.objects.annotate(countries_visited=country_set.count())
我知道最后一点“代码”没有任何意义,但我依靠它来传达我心中的欲望。我知道我可以做这样的事情:
[(t.pk, t.country_set.count()) for t in Tourist.objects.all()]
但我只是想知道是否有更好的方法来做到这一点。谢谢!
答案 0 :(得分:2)
你已经非常接近了。
from django.db.models import Count
Tourist.objects.annotate(countries_visited=Count('country'))
做你想要的,即使你正在追随这种关系。