from django.db.models import Q from django_filters import rest_framework as filters from .models import City, Neighborhood class CityFilter(filters.FilterSet): search = filters.CharFilter(field_name='name', lookup_expr='icontains', help_text='Search by city name.') class Meta: model = City fields = ['search'] class NeighborhoodFilter(filters.FilterSet): city = filters.UUIDFilter(field_name='city__uuid', help_text='Filter by city UUID.') search = filters.CharFilter(method='filter_search', help_text='Search by neighborhood or city name.') class Meta: model = Neighborhood fields = ['city', 'search'] def filter_search(self, queryset, name, value): return queryset.filter(Q(name__icontains=value) | Q(city__name__icontains=value))