Django Представление на основе классов фильтрует кверисет, но не фильтрует?

У меня есть небольшая проблема с тем, как работает фильтр по дате:

Django представление на основе классов, начиная отсюда https://github.com/varlenthegray/wcadmin/blob/master/customer/views.py#L61

class CustomersCustomReport(generic.ListView):
    model = Customer
    template_name = 'customer/reports/custom_report.html'

    def get_queryset(self):
        from_date = self.request.GET.get('fromDate')
        to_date = self.request.GET.get('toDate')
        self.queryset = Customer.objects.filter(is_active=True)

        if from_date:
            from_date = datetime.strptime(from_date, '%m-%d-%Y').strftime('%Y-%m-%d')
            print("Checking date from " + from_date)

            self.queryset.filter(next_service__gte=from_date)

        if to_date:
            to_date = datetime.strptime(to_date, '%m-%d-%Y').strftime('%Y-%m-%d')
            print("Checking date to " + to_date)
            self.queryset.filter(next_service__lte=to_date)

        return self.queryset

Я ожидаю, что это вернет отфильтрованный запрос на основе даты, которая является полем формы.

https://wcadmin.innovated.tech/customer/report/custom_report?fromDate=04-01-2022&toDate=04-30-2022

Я знаю, что эти данные не фильтруются, потому что весь список клиентов - это 521 запись из макетных данных, которые активны. Я следовал информации из этого вопроса: Как я могу фильтровать по диапазону дат используя Djangos Built in ListView?

Я знаю, что он получает данные из базы данных, я знаю, что он получает нужный мне диапазон дат из URL благодаря печати, и модель установлена на DateField для next_service, так что я не совсем уверен, что здесь происходит не так?

вам нужно лишь немного изменить:

def get_queryset(self):
    from_date = self.request.GET.get('fromDate')
    to_date = self.request.GET.get('toDate')
    queryset = Customer.objects.filter(is_active=True) # change

    if from_date:
        from_date = datetime.strptime(from_date, '%m-%d-%Y').strftime('%Y-%m-%d')
        print("Checking date from " + from_date)

        queryset = queryset.filter(next_service__gte=from_date) # change

    if to_date:
        to_date = datetime.strptime(to_date, '%m-%d-%Y').strftime('%Y-%m-%d')
        print("Checking date to " + to_date)
        queryset = queryset.filter(next_service__lte=to_date) # change

    return queryset # change
Вернуться на верх