Я написал собственный фильтр, используя пакет django -filter, как указано в документации DRF здесь: https://www.django-rest-framework.org/api-guide/filtering/#djangofilterbackend
Вот мой код:
class GeoFilter(filters.FilterSet):
village_name = filters.CharFilter(field_name='village_name', lookup_expr='icontains', label = 'village_name')
country_id = filters.NumberFilter(field_name='block__district__state__country', lookup_expr='exact', label = 'country_id')
country_name = filters.CharFilter(field_name='block__district__state__country__country_name', lookup_expr='icontains', label = 'country_name')
class Meta:
model = Village
fields = ['village_name', 'country_id', 'country_name']
class VillagesViewSet(viewsets.ModelViewSet):
'''
Villages list with django-filters
'''
authentication_classes = [TokenAuthentication]
permissions_classes =[IsAuthenticated]
serializer_class = VillageSerializer
queryset = Village.objects.get_queryset().order_by('id')
filter_backends = [filters.DjangoFilterBackend]
filterset_class = GeoFilter
Это запрос GET. Я хочу писать только запросы POST с фильтрацией, используя DjangoFilterBackend. Я пытаюсь выяснить, возможно ли это. В настоящее время я использую ORM-фильтр, но я хочу использовать django -фильтр, так как я считаю его более подходящим для фильтрации.