Я использую 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®ion=10
Верните клиентов, которые живут на пересечении городов региона 10
и города 32
, но мне нужны все клиенты, которые живут в одном из обоих наборов.