Фильтр по нескольким годам в DRF
Так я пытаюсь сделать фильтр по году и поэтому он может использовать несколько значений, как это
filter?year=2000,2021
И с этим я должен получить все объекты с годом 2000 или 2021
Мой filter.py
from django_filters import(
BaseInFilter,
NumberFilter,
FilterSet,
CharFilter,
)
from .models import Research
class YearInFilter(BaseInFilter, NumberFilter):
pass
class ResarchFilter(FilterSet):
year = YearInFilter(field_name='date', lookup_expr='year')
category = CharFilter(field_name='category', lookup_expr='iexact')
class Meta:
model = Research
fields = ['date', 'category']
Это выглядит почти как пример из django-filter.
Но когда я пытаюсь использовать его, я получаю ошибку Field 'None' expected a number but got [Decimal('2000'), Decimal('2021')].
Так что же здесь не так? Почему здесь десятичная дробь? Почему это не число? И как заставить его работать так, как ожидалось?
Если вам нужны все данные между этими двумя годами, используйте range. если вам нужны только те данные, которые существуют в эти годы, используйте in
пример:
year = YearInFilter(field_name='date', lookup_expr='range')
year = YearInFilter(field_name='date', lookup_expr='in')
Пожалуйста проверьте, как именно вы можете применить эти фильтры в Django_filter
Желаю удачи