Django在多个字段上保留了连接查询

时间:2015-02-20 12:45:19

标签: mysql django

我定义了三个模型,如下所示

class City(models.Model):
    city_name = models.CharField(...)    

class Restaurant(models.Model):
    restaurant_name = models.CharField(...)
    city = models.ManyToManyFields(City)

class MenuItemCount(models.Model):
    restaurant = models.ForeignKey(Restaurant)
    city = models.ForeignKey(City)
    menu_count = models.IntegerField()

需要注意的是,MenuCount中可能不存在所有餐馆和城市。所以需要左连接。

我正在尝试编写django查询以检索餐馆名称,城市名称和菜单计数的列表。示例结果将是

restaurant1, city1, 20
restaurant1, city2, None
restaurant2, city2, 30
restaurant3, city1, None

如何为此编写查询?

1 个答案:

答案 0 :(得分:0)

如果要获取1个查询中的所有数据,可以使用prefetch_related。您可以看到文档here。这是一个例子。

City.objects.prefetch_related('restaurant_set', 'menuitemcount_set').all()