Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you use Django-filter's '__in' lookup?

Tags:

python

django

I am using Django REST framework with the django-filter package, but my question is mostly about django-filter. I don't understand how to use filters with "__in" lookup.

For example I have the following model:

class Book(models.Model):
   name = models.CharField(max_length=100)

class BookView(viewsets.ReadOnlyModelViewSet):
   serializer_class = BookSerializer()
   model = Book
   filter_fields = ('id', 'name')

And I can't use URLs like /v1/books/?id__in=1,2,3 to find books with id 1, 2 or 3.

How do you use Django-filter's '__in' lookup?

like image 340
user2645813 Avatar asked Aug 02 '13 12:08

user2645813


1 Answers

There's a simple solution with django_filter now:

class BookView(viewsets.ReadOnlyModelViewSet):
   serializer_class = BookSerializer()
   model = Book
   filter_fields = {
      'id': ['exact', 'in'],
      'name': ['exact']
   }

And then you can use it in your query string exactly as you wanted: ?id__in=1,2,3.

like image 50
sgable Avatar answered Sep 24 '22 10:09

sgable