【问题标题】:How to filter by date range in django-rest?如何在 django-rest 中按日期范围过滤?
【发布时间】:2020-03-05 22:05:17
【问题描述】:
我想按在浏览器中输入的日期范围过滤我的数据,所有其他过滤都正常工作。
views.py
class BookView(generics.ListAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializers
filter_backends = [filters.SearchFilter]
search_fields = ['title', 'language', 'authors', 'date']
【问题讨论】:
标签:
django
python-3.x
django-rest-framework
django-filter
【解决方案1】:
你需要创建一个新的过滤器:
class StatementItemFilter(filters.FilterSet):
date_between = filters.DateFromToRangeFilter(field_name="MODEL_FIELD_NAME", label="Date (Between)")
class Meta:
model = StatementItem
fields = [
...
"date_between"
]
并在您的视图中使用
class MODELItemViewSet(viewsets.ReadOnlyModelViewSet):
filter_backends = (DjangoFilterBackend,)
filterset_class = StatementItemFilter
...
将您的列表 ['title', 'language', 'authors', 'date'] 移动到您的新过滤器集类