Home » Python » django filter with list of values

django filter with list of values

Posted by: admin November 1, 2017 Leave a comment

Questions:

I’m sure this is a trivial operation, but I can’t figure out how it’s done… How can I create a django query for a list of values.

There got to be something smarter than this:

ids = [1, 3, 6, 7, 9]
for id in ids:
   MyModel.objects.filter( pk=id )

I’m looking to get them all in one show with something like:

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

From the Django documentation:

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

Questions:
Answers:

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.