【问题标题】:Django left join query on multiple fieldsDjango在多个字段上左连接查询
【发布时间】:2015-02-20 12:45:18
【问题描述】:

我已经定义了三个模型如下

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

如何为此编写查询?

【问题讨论】:

    标签: mysql django


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-29
      • 2017-06-30
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2019-01-07
      • 1970-01-01
      • 2018-08-17
      相关资源
      最近更新 更多