Django:ORM 是否支持 SQL“IN”?操作员?

发布于 2024-10-28 19:04:26 字数 174 浏览 4 评论 0原文

Django ORM 是否支持 SQL IN 运算符?比如:

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

我如何使用 Django ORM 进行这样的查询?

谢谢。

Does the Django ORM support the SQL IN operator? Something like:

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

How do I use the Django ORM to make a query like that?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

咿呀咿呀哟 2024-11-04 19:04:26

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)

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)
GRAY°灰色天空 2024-11-04 19:04:26

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

例如:

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

Beside that, Django ORM also support for Sub-Query:

For example:

from django.db.models import Subquery
users = User.objects.all()
UserParent.objects.filter(user_id__in=Subquery(users.values('id')))
红焚 2024-11-04 19:04:26

正如 Yuji 上面指出的那样,__in=[] 被转换为以下 SQL:

WHEREIN ()

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

https://docs.djangoproject.com/en/1.9/ref/models/查询集/

as Yuji indicates above <field_name>__in=[<list_of_values>] is translated to the following SQL:

WHERE <field_name> IN (<list_of_values>)

you can find the complete reference of django SQL WHERE operators under the Field lookups section of the following Django API document.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文