Django使用外键和具有计数的ManyToMany字段查询多个模型

时间:2015-02-20 15:40:43

标签: python mysql django

我有3个数据库表(模型),我正在尝试使用Django ORM查询来根据每个城市的菜肴类型计算餐馆数量。

型号:

RESTAURANT
name ..
city = models.ForeignKey('City') 
cuisine_types = models.ManyToManyField('Cuisinetype')

CITY
name ..

CUISINETYPE
name ..

如果我使用原始SQL查询,这样的事情会给我想要的结果:

SELECT 
  city.`name` AS city,
  cuisinetype.`cuisine`,
  COUNT(
    restaurant_cuisine_types.`cuisinetype_id`
  ) AS total 
FROM
  restaurant_cuisine_types 
  JOIN cuisinetype 
    ON restaurant_cuisine_types.`cuisinetype_id` = cuisinetype.`id` 
  JOIN restaurant 
    ON restaurant_cuisine_types.`restaurant_id` = restaurant.`id` 
  JOIN city 
    ON restaurant.`city_id` = city.`id` 
GROUP BY cuisinetype_id,
  city.name 
ORDER BY city,
  cuisine 
LIMIT 0, 1000;

结果

city    cuisine total
Albuquerque American    5
Albuquerque French  1
Albuquerque Italian 1
Albuquerque Southwest   2
Albuquerque Steak   2
Atlanta American    6
Atlanta Asian   1
Atlanta Continental 2
Atlanta Fusion  1
Atlanta International   1
Atlanta Italian 1
...

那么Django获得这些结果的方法是什么?

0 个答案:

没有答案