[python] Django 쿼리를 값 목록으로 필터링하려면 어떻게해야합니까?

나는 이것이 사소한 작업이라고 확신하지만 어떻게 수행되는지 알 수 없습니다.

이보다 더 똑똑해야합니다.

ids = [1, 3, 6, 7, 9]

for id in ids:
    MyModel.objects.filter(pk=id)

나는 다음과 같은 하나의 쿼리로 그것들을 모두 얻으려고합니다.

MyModel.objects.filter(pk=[1, 3, 6, 7, 9])

Django 쿼리를 값 목록으로 필터링하려면 어떻게해야합니까?



답변

로부터 장고 문서 :

Blog.objects.filter(pk__in=[1, 4, 7])


답변

항목 목록이 있고 목록에서 가능한 값을 확인하려면을 사용할 수 없습니다 =.

SQL 쿼리는 SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]사실이 아닙니다. Django 제공 연산자 in와 같은 쿼리가되도록 연산자 를 사용해야 SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)합니다 __in.


답변

로부터 장고 문서 :

Blog.objects.in_bulk([1])
{1: <Blog: Beatles Blog>}

Blog.objects.in_bulk([1, 2])
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}

Blog.objects.in_bulk([])
{}

Blog.objects.in_bulk()
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>, 3: <Blog: Django Weblog>}

Blog.objects.in_bulk(['beatles_blog'], field_name='slug')
{'beatles_blog': <Blog: Beatles Blog>}


답변