django-rest-framework-filters icon indicating copy to clipboard operation
django-rest-framework-filters copied to clipboard

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

Open weiyong996 opened this issue 1 year ago • 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?

weiyong996 avatar Aug 13 '23 16:08 weiyong996

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

truongvan avatar Sep 10 '23 17:09 truongvan

@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

Greg-Hamel avatar Sep 14 '23 18:09 Greg-Hamel