【问题标题】:How to make queryset in django?如何在 django 中创建查询集?
【发布时间】:2020-02-17 19:09:40
【问题描述】:
item_list = Item.objects. filter(location_id=location_id)

image_list = Image.objects.filter(?????)

class Image(models.Model):
    item = models.ForeignKey(Item, models.on_delete=CASCADE)

我只想获取第一个查询集 item_list 中 item_id 的图像

【问题讨论】:

    标签: django python-3.x django-views


    【解决方案1】:

    您可以使用__in lookup [Django-doc]:

    image_list = Image.objects.filter(<b>item__in=item_list</b>)

    对于某些数据库,例如 MySQL,有时不擅长优化非动态子查询,最好先物化Items 的列表,然后传递一个Django 中的 id 列表:

    image_list = Image.objects.filter(item__in=<b>list(</b>item_list<b>)</b>)

    这在文档中指定为:

    谨慎使用嵌套查询并了解您的数据库服务器的性能特征(如有疑问,请进行基准测试!)。一些数据库后端,尤其是 MySQL,不能很好地优化嵌套查询。在这些情况下,提取值列表然后将其传递给第二个查询会更有效。

    【讨论】:

      猜你喜欢
      • 2014-05-31
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      相关资源
      最近更新 更多