如何使用django-filrers DRF进行OR表达式?

时间:2019-06-25 09:49:50

标签: python django django-rest-framework django-filter django-filters

我在前端使用Angular,在后端使用django-rest-framework。用户想通过cityregion使用客户过滤器。一个地区包括几个城市。

过滤器代码:

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)

因此,我想查看来自指定citiesreqions的客户。

例如:

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

回访居住在城市区域10和城市32的交集内的客户,但我需要所有居住在这两个集合之一内的客户。

0 个答案:

没有答案