From fd6aced51e4a3c01979a64e2bedc1827fbecd2d2 Mon Sep 17 00:00:00 2001 From: Kirill Date: Mon, 3 Feb 2020 19:18:23 +0300 Subject: [PATCH] filtration by country code --- apps/location/filters.py | 8 ++++++++ apps/location/views/back.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/location/filters.py b/apps/location/filters.py index c50b9964..6f19b3fd 100644 --- a/apps/location/filters.py +++ b/apps/location/filters.py @@ -8,6 +8,7 @@ class CityBackFilter(filters.FilterSet): """Employee filter set.""" search = filters.CharFilter(method='search_by_name') + country_code = filters.CharFilter(method='filter_by_country_code') class Meta: """Meta class.""" @@ -15,8 +16,15 @@ class CityBackFilter(filters.FilterSet): model = models.City fields = ( 'search', + 'country_code', ) + def filter_by_country_code(self, queryset, name, value): + """Filter by country code.""" + if value not in EMPTY_VALUES: + return queryset.by_country_code(value) + return queryset + def search_by_name(self, queryset, name, value): """Search by name or last name.""" if value not in EMPTY_VALUES: diff --git a/apps/location/views/back.py b/apps/location/views/back.py index 3138fe2c..2085b95b 100644 --- a/apps/location/views/back.py +++ b/apps/location/views/back.py @@ -52,7 +52,7 @@ class CityListCreateView(common.CityViewMixin, generics.ListCreateAPIView): """Overridden method 'get_queryset'.""" qs = models.City.objects.all().annotate(locale_name=KeyTextTransform(get_current_locale(), 'name'))\ .order_by('locale_name').with_base_related() - if self.request.country_code: + if self.request.country_code and self.request.query_params.get('country_code') is None: qs = qs.by_country_code(self.request.country_code) return qs