Django:ORM是否支持SQL“IN”运算符?

时间:2011-03-30 04:36:31

标签: django django-queryset django-orm

Django ORM是否支持SQL IN运算符?类似的东西:

SELECT *
FROM user
WHERE id IN (1, 5, 34, 567, 229)

如何使用Django ORM进行类似的查询?

感谢。

3 个答案:

答案 0 :(得分:36)

in

User.objects.filter(id__in=[1, 5, 34, 567, 229])

print _.query
SELECT <fields> FROM "auth_user" WHERE "auth_user"."id" IN (1, 5, 34, 567, 229)

答案 1 :(得分:0)

如Yuji所示&lt; field_name&gt; __ in = [&lt; list_of_values&gt;]转换为以下SQL:

WHERE&lt; field_name&gt; IN(&lt; list_of_values&gt;)

您可以在以下Django API文档的字段查找部分找到django SQL WHERE运算符的完整参考。

https://docs.djangoproject.com/en/1.9/ref/models/querysets/

答案 2 :(得分:0)

除此之外,Django ORM还支持子查询:

例如:

from django.db.models import Subquery
users = User.objects.all()
UserParent.objects.filter(user_id__in=Subquery(users.values('id')))