philipn/django-rest-framework-filters

How to use the field 'in' in django-rest-framework-filters, like 'user_id__in=[12,13]'?

weiyong996 opened this issue · 2 comments

My FilterSet

class UserFilter(filters.FilterSet):
    class Meta:
        model = User
        fields = {'id': ['exact', 'in',]}

Evn

python 3.7
django 2.1.1
django-filter 2.1.0
djangorestframework 3.8.2
djangorestframework-filters 1.0.0.dev2

Issue Description

I use postman send a request

I want to match to ids (for example: Bob, Alice), the logic url is: /api/companies?user_id__in=[12,13]
(I know that both '[' and ']' will be converted to %5B and %5D by browser, so true url is: /api/companies?user_id__in=%5BBob,Alice%5D)

I hope get two records by user_id__in[12,13], unfortunately I get all records, so how to resolve the problem?
Is there something wrong with me?

Use with QueryArrayWidget
It supports those strings:

1. Values can be provided as csv string:  ?foo=bar,baz
2. Values can be provided as query array: ?foo[]=bar&foo[]=baz
3. Values can be provided as query array: ?foo=bar&foo=baz

@weiyong996 For your implementation, using /api/companies?user_id__in=12,13 should give you the results you are looking for.
Ensure the UserFilter is defined in the view associated to the /companies url