Django 表单中的clean()方法不工作(将其加载到ListView)

Django 表单中的clean()方法不工作(将其加载到ListView),django,listview,django-views,django-forms,django-queryset,Django,Listview,Django Views,Django Forms,Django Queryset,我已经尝试过搜索和阅读文档,但我不太明白在处理ListView的get_querysets()和get方法时如何使用clean()方法 我尝试在clean()方法中添加断点(),但它没有被触发,这意味着它根本没有被调用 我的怀疑是因为我没有使用post作为表单中的方法,但我需要使用get来构建对查询集的筛选查询(即,它是使用from和to的日期选择器) 这是我的设置(省略详细信息): 表格: 列表视图: class ReportView(ListView): form_class = R

我已经尝试过搜索和阅读文档,但我不太明白在处理ListView的get_querysets()和get方法时如何使用clean()方法

我尝试在clean()方法中添加断点(),但它没有被触发,这意味着它根本没有被调用

我的怀疑是因为我没有使用post作为表单中的方法,但我需要使用get来构建对查询集的筛选查询(即,它是使用from和to的日期选择器)

这是我的设置(省略详细信息):

表格:

列表视图:

class ReportView(ListView):
    form_class = ReportForm


    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        form = kwargs.get('form', self.form_class())
        context['form'] = form
        return context
 
    def get_queryset(self):
        # Details omitted but I'm essentially taking data from the form 
        # and using it to filter a QuerySet

        from_date = self.request.GET.get('from_date')
        to_date = self.request.GET.get('to_date')

        .......

        return QuerySet

模板:

   <form action="" method="get">
         {% csrf_token %}
         {% crispy form %}
   </form>

{%csrf_令牌%}
{%crispy form%}

有人知道为什么没有调用我的clean方法吗?

结果表明,我在
get\u context\u data()
中设置表单变量的方式是错误的

(我没有将数据绑定到表单)

这解决了我的问题:

form = ReportForm(self.request.GET)

为什么ListView实现会在任何与表单相关的事情上调用clean来清理表单,请查看文档|它最终只是我在发出get请求时捕获表单的方式,我在本文中给出了答案。谢谢你的评论!
form = ReportForm(self.request.GET)