Django查询3个表

时间:2012-01-11 07:52:54

标签: django django-models

我有以下模型结构Country,City(fk = country)和School(fk = city)。现在我想获得有城市的国家列表,如果城市有学校。在我的模板中,我想做

for country in countrylist
    for city in getcitieswithschool

我可以通过一个查询获得结果集吗?

2 个答案:

答案 0 :(得分:2)

通过

获取城市
City.objects.filter(school__isnull=False).distinct().select_related('country')

然后country {{1}} {{1}}它们将是干净而有效的。

答案 1 :(得分:1)

您可以使用此查询获取

from django.db.models import Count

countrylist = Country.objects.all()\
    .annotate(cities_cnt=Count('city'), schools_cnt=Count('city__school'))\
    .filter(cities_cnt__gt=0, schools_cnt__gt=0)