I'm trying to filter multiple query parameters with a same key, for example:
api/?city=Kazan&city=Moscow
But I get all objects which city=Kazan
I tried this code, but nothing has changed:
class FinalListView(generics.ListAPIView):
    serializer_class = FinalSerializer
    filter_backends = [django_filters.rest_framework.DjangoFilterBackend]
    def get_queryset(self):
        condition = Q()
        queryset = Final.objects.all()
        city = self.request.query_params.getlist('city')
        if city:
            if city != 'all':
                for a in city:
                    condition |= Q(city__startswith=a)
                    queryset = queryset.filter(condition)
    return queryset
                You should only filter at the end of the for loop:
def get_queryset(self):
    condition = Q()
    queryset = Final.objects.all()
    city = self.request.query_params.getlist('city')
    if city:
        if city != 'all':
            for a in city:
                condition |= Q(city__startswith=a)
            #                     ↓ end of the for loop
            queryset = queryset.filter(condition)
return queryset
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With