我有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获得这些结果的方法是什么?