我已经用一个 meta类声明了一个django_filters.FilterSet,我想在其中使用filter_overrides来自定义一些过滤器。我使用的代码与官方文档中的示例非常相似:
class AccommodationFilter(django_filters.FilterSet):
class Meta:
model = AccommodationOffer
fields = ['numberOfPeople', 'petsAllowed', 'typeOfResidence', 'startDateAccommodation' ]
filter_overrides = {
models.BooleanField: {
'filter_class': django_filters.BooleanFilter,
'extra': lambda f: {
'widget': forms.CheckboxInput(attrs={'class':'form-control', 'value' : 'true'}),
},
},
models.CharField: {
'filter_class': django_filters.ChoiceFilter,
'extra': lambda f: {
'widget': forms.Select(attrs={'class':'form-control'}),
},
},
}
BooleanFields按预期显示,但是无论我如何尝试,CharFields(设置了选项)都不会使用class=“form-control”属性呈现。
1条答案
按热度按时间ut6juiuv1#
正如每个评论所提到的,这是django_filters中的一个bug。只要this issue没有得到解决,就必须修改django_filters代码。
如果有人遇到同样的问题,这是我提出的解决方案: