跟随关系,并注释结果

时间:2010-12-15 02:51:28

标签: python django django-models

说我有几个型号,一个通过外键与另一个相关:

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()]

但我只是想知道是否有更好的方法来做到这一点。谢谢!

1 个答案:

答案 0 :(得分:2)

你已经非常接近了。

from django.db.models import Count

Tourist.objects.annotate(countries_visited=Count('country'))

做你想要的,即使你正在追随这种关系。