如何在django_filter

时间:2019-06-24 22:22:32

标签: django python-3.x django-filter

我有一个工作的django过滤器,用于过滤日期之后的日期,该日期作为整数时间戳存储在数据库级别。在其他地方,我始终将时间戳记表示为模板中的日期,但是在django_filter中,它会显示字段值,这当然是时间戳记整数。

例如,如果我的过滤器是:

dispatch__gt = django_filters.NumberFilter(field_name='dispatch_time', lookup_expr='gt', label='Dispatched after')

它希望有一个时间戳输入,它可以正常工作,但看起来很糟糕。

我想做的是让它显示一个基于选择列表的选择过滤器:一年以上,一个月以上,一周以上,等等。

我尝试过:

dispatch__gt = django_filters.ChoiceFilter(field_name='dispatch_time', lookup_expr='gt', label="Dispatched after",
                                            choices=Date_Choices)

使用表格中的template_tag生成Date_Choices。这样可以正确生成表单,并将正确的值从表单传递到过滤器,但从不进行过滤。

可以完全使用django_filters.ChoiceFilter进行比较,还是只能匹配?

要清楚,我指的是这个软件包:

https://django-filter.readthedocs.io/en/master/index.html

谢谢。

修改

我有一个解决方法,就是使用模板标记创建类似于django_filters.ChoiceFilter创建的选择形式,该选择形式将结果传递给django_filters.NumberFilter而不是django_filters.ChoiceFilter。然后lookup_expr ='gt'起作用。

基本上看来,lookup_expr ='gt'不适用于django_filters.ChoiceFilter。

如果有人有一个答案,我非常希望得到一个更好的答案,但是这种解决方法暂时可以解决问题。

0 个答案:

没有答案