Фильтр данных между двумя датами в Django rest api

Я создаю приложение react, которое использует Django rest API. Я хочу фильтровать данные между двумя диапазонами дат таким образом, чтобы пользователь мог выбрать начальную и конечную дату с фронтенда и отправить пост-запрос на мой Django бэкенд, а фильтрация должна быть выполнена с бэкенда. В настоящее время я застрял на том, что фильтрация не работает. Я фильтрую по timestamp(added_on).

Моя модель

class Orders(models.Model):
    choices = ((1, "Nairobi"), (2, "Nyanza"),
               (3, "Central"), (4, "Coast"),
               (5, "Eastern"), (6, "North Eastern"),
               (7, "Western"), (8, "Rift Valley"))
    choices1 = ((1, "Pishori"), (2, "Komboka"))

    id = models.AutoField(primary_key=True)
    phone = models.CharField(max_length=255)
    name = models.CharField(max_length=255)
    customer_id = models.ForeignKey(Customer, on_delete=models.CASCADE)
    town = models.CharField(max_length=255)
    region = models.CharField(choices=choices, max_length=255)
    farmer_id = models.ForeignKey(Farmer, on_delete=models.CASCADE)
    kgs = models.CharField(max_length=255)
    packaging = models.CharField(max_length=255)
    transport = models.CharField(max_length=255)
    discount = models.CharField(max_length=255)
    amount = models.CharField(max_length=255)
    price = models.CharField(max_length=255)
    comment = models.TextField()
    rice_type = models.CharField(choices=choices1, max_length=255)
    status = models.BooleanField(default=False)
    added_on = models.DateTimeField(auto_now_add=True)
    objects = models.Manager()

мой сериализатор

class OrdersSerializer(serializers.ModelSerializer):
    class Meta:
        model = Orders
        fields = "__all__"

    def to_representation(self, instance):
        response = super().to_representation(instance)
        response["farmer"] = FarmerSerializer(instance.farmer_id).data
        response["customer"] = CustomerSerializer(instance.customer_id).data
        return response

моя точка зрения

class OrderDateViewSet(generics.ListAPIView):
    serializer_class = OrdersSerializer
    queryset = Orders.objects.all()
    permission_classes = [permissions.AllowAny]

    def post(self, request):
        try:
            serializer = OrdersSerializer(data=request.data, context={"request": request})
            serializer.is_valid(raise_exception=True)
            startDate = serializer.validated_data['startDate']
            endDate = serializer.validated_data['endDate']
            orders = Orders.objects.filter(added_on__gte=startDate, added_on__lte=endDate)
            serializer = OrdersSerializer(orders, many=True)
            dict_response = {"error": False, "message": "Orders Between Dates", "data": serializer.data}
        except:
            dict_response = {"error": True, "message": "An error occured"}

        return Response(dict_response)

После отправки запроса я получаю только сообщение об ошибке, но я хочу получить отфильтрованные данные

Я думаю, что нашел способ сделать это, но я все еще не знаю, почему он возвращает пустой массив вместо того, чтобы возвращать данные. Я сделал все изменения в моем view.py

class OrderDateViewSet(generics.ListAPIView):
    serializer_class = OrdersSerializer

    def get_queryset(self):
        startDate = self.kwargs.get('startDate')
        endDate = self.kwargs.get('enDate')
        return Orders.objects.filter(added_on__range=[startDate, endDate])
Вернуться на верх