class PermisFilter(FilterSet):
ap_num = django_filters.CharFilter()
custom_filter = django_filters.DateFilter(method='_custom_filter', label="Filtrer (date de signature ou date d'expiration)")
def _custom_filter(self, queryset, name, value):
return queryset.filter(
#Q(ap_num__icontains=value) |
Q(ap_date_signature__icontains=value) |
Q(ap_date_expiration__icontains=value)
)
class Meta:
model = Permis
fields = ()
我在用django-filter插件时,我的ap_num是CharField类型,但是我的ap_date_signature和ap_date_expiration是DateField类型。
如果我单独用django_filters.CharFilter和django_filters.DateFilter的话则会出现三个筛选框,我想在已经使用了custom_filter将两个DateField类型的数据放入同一筛选框进行筛选,
请问如何将CharField类型的ap_num也放进去,实现同一个筛选框可以检索三个数据的其中之一?
DateField和CharField先转换成同一种类型String,String前面添加一个标记比如C-代表CharField、D-代表DateField
value用函数转换成DateField和CharField,那个标记代表你要转换的类型