Django-filter показывает все поля, а не только те, которые были указаны
В моем filters.py
:
class DataFilter(FilterSet):
start_date = DateFilter(field_name='date',lookup_expr=('lt'))
end_date = DateFilter(field_name='date',lookup_expr=('gt'))
date_range = DateRangeFilter(name='date')
class Meta:
model = DataModel
fields = ['date', ]
Я также пробовал устанавливать fields = []
, но фильтры всех полей все еще существуют.
Почему он показывает все, даже если я указал только один (даже ни одного)? И как это исправить?
Может ли кто-нибудь помочь объяснить? Спасибо!
В моем models.py
:
class DataModel(models.Model):
date = models.DateField(default=now)
other_field_1 = models.CharField()
other_field_2 = models.CharField()
other_field_3 = models.CharField()
В моем views.py
:
class DataModelListView(LoginRequiredMixin, FilterView):
model = DataModel
template_name = 'datamodel_list.html'
filter_class = DataFilter
Я использую django 3, django-filter 21.
Решение:
Поскольку изменение FilterSet.Meta
все равно не работает, я попробовал посмотреть на другие части кода. Затем я обнаружил, что изменение filter_class
на filterset_class
в FilterView
(как показано ниже) работает для меня!
class DataModelListView(LoginRequiredMixin, FilterView):
model = DataModel
template_name = 'datamodel_list.html'
filterset_class = DataFilter # instead of setting filter_class