Джанго: поддерживает ли ORM оператор SQL «IN»? - PullRequest
18 голосов
/ 30 марта 2011

Поддерживает ли Django ORM оператор SQL IN? Что-то вроде:

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

Как мне использовать Django ORM для выполнения такого запроса?

Спасибо.

Ответы [ 3 ]

36 голосов
/ 30 марта 2011

в

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)
0 голосов
/ 01 февраля 2019

Кроме того, Django ORM также поддерживает подзапрос:

Например:

from django.db.models import Subquery
users = User.objects.all()
UserParent.objects.filter(user_id__in=Subquery(users.values('id')))
0 голосов
/ 11 июня 2016

как указывает Юджи выше__in = [] переводится на следующий SQL:

ГДЕВ ()

полный список операторов SQL WHERE django можно найти в разделе Поиск полей следующего документа API Django.

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

...