Как я могу сделать выражение ИЛИ с django-filrers DRF? - PullRequest
0 голосов
/ 25 июня 2019

Я использую Angular на внешнем интерфейсе и django-rest-framework на внутреннем.Пользователь хочет использовать фильтр клиента по city и region.Один регион включает несколько городов.

Код фильтра:

class CustomerFilter(filterset.FilterSet):
    # a lot of filters (status, name etc.)
    ... 

    city = filters.ModelMultipleChoiceFilter(queryset=City.objects.all())
    region = filters.ModelMultipleChoiceFilter(method='filter_regions',
                                               queryset=Region.objects.all())

    class Meta:
        model = Customer
        fields = ['city']

    def filter_regions(self, queryset, name, value):
        if not value:
            return queryset
        return queryset.filter(city__region__in=value)

В результате я хочу видеть клиентов из указанных cities ИЛИ reqions.

Например:

/api/customers/?city=32&region=10

Верните клиентов, которые живут на пересечении городов региона 10 и города 32, но мне нужны все клиенты, которые живут в одном из обоих наборов.

...