Почему он получает объекты для провинции, но не для города, когда город находится в провинции
У меня есть проект 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)
Может ли кто-нибудь сказать мне, где я делаю ошибку?