如何按Django-Rest中的日期范围过滤?

时间:2019-11-09 15:29:10

标签: django python-3.x django-rest-framework django-filter

我想按在浏览器中键入的日期范围过滤数据,所有其他过滤均有效。

views.py

class BookView(generics.ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializers
    filter_backends = [filters.SearchFilter]
    search_fields = ['title', 'language', 'authors', 'date']

1 个答案:

答案 0 :(得分:0)

您需要创建一个新的过滤器:

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']移至新的过滤器集类