Почему он получает объекты для провинции, но не для города, когда город находится в провинции

У меня есть проект Django и следующие модели для местоположения, которое привязано к бизнесу в данном случае и связано с ним как филиалы:

Проблема заключается в следующем представлении DRF для фильтрации предприятий по местоположению. Оно работает для фильтрации по провинции, но город не возвращает никаких объектов, когда на самом деле город находится в провинции, которая находит бизнес-объект, когда я фильтрую его.

Вот вид:

class ListBusinessByLocation(generics.ListAPIView):
    permission_classes = [IsAuthenticated]
    serializer_class = ListBusinessesSerializer

    def post(self, request, *args, **kwargs):
        location_id = request.data.get('id')  
        location_type = request.data.get('type') 
        
        queryset = Business.objects.all()

        if not location_id or not location_type:
            return Response({"error": "Both 'id' and 'type' are required."}, status=HTTP_400_BAD_REQUEST)

        if location_type == 'area':
            try:
                area = Area.objects.get(pk=location_id)
                queryset = queryset.filter(branches__area=area).distinct()
                return self.get_response(queryset)
            except Area.DoesNotExist:
                return Response({"error": "Area not found."}, status=HTTP_404_NOT_FOUND)

        elif location_type == 'city':
            breakpoint()
            try:
                city = City.objects.get(pk=location_id)
                queryset = queryset.filter(branches__area__city=city).distinct()
                return self.get_response(queryset)
            except City.DoesNotExist:
                return Response({"error": "City not found."}, status=HTTP_404_NOT_FOUND)

        elif location_type == 'province':
            try:
                province = Province.objects.get(pk=location_id)
                queryset = queryset.filter(branches__area__city__province=province).distinct()
                return self.get_response(queryset)
            except Province.DoesNotExist:
                return Response({"error": "Province not found."}, status=HTTP_404_NOT_FOUND)

        return Response({"error": "Invalid location type."}, status=HTTP_400_BAD_REQUEST)

    def get_response(self, queryset):
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

Может ли кто-нибудь сказать мне, где я делаю ошибку?

Вернуться на верх