How can I filter a Django query with a list of values?
When you have list of items and you want to check the possible values from the list then you can't use =
.
The sql query will be like SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
which is not true. You have to use in
operator for this so you query will be like SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
for that Django provide __in
operator.
From the Django documentation:
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>}