繁体   English   中英

如何在 Django 中创建查询集?

[英]How to make queryset in django?

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 的那些图像

您可以使用__in查找[Django-doc]

image_list = Image.objects.filter(item__in=item_list)

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

image_list = Image.objects.filter(item__in=list(item_list))

这在文档中指定为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM