我正在使用django rest api.can我们使用filter-backend来检索2个日期之间的数据,日期作为url参数给出。
class DotOrderViewSet(viewsets.ModelViewSet):
permission_classes = (GroupPermissionExternalApi,)
serializer_class = dot_order_serializers.DotOrderSerializer
queryset = dot_order_models.DotOrder.objects.all()
filter_backends = (filters.DjangoFilterBackend,
filters.SearchFilter, filters.OrderingFilter,)
search_fields = ('id', 'merchant__email', 'merchant__contact',
'biker__name',
'biker__contact',biker__datetime_created',
'biker__type')
ordering_fields = '__all__'
def list(self,request):
start=request.GET.get('from_date')
end=request.GET.get('to_date')
答案 0 :(得分:0)
我发现您正在使用DjangoFilterBackend
,因此您可以创建自己的自定义filter_class
并使用DateTimeFromToRangeFilter
。
class DotOrderFilterSet(FilterSet):
date_range = DateTimeFromToRangeFilter()
class Meta:
model = dot_order_models.DotOrder
fields = ['date_range', ... ]
fields
还应包含您要过滤的DotOrder模型中的其余字段。然后在视图中添加过滤器类:
class DotOrderViewSet(viewsets.ModelViewSet):
...
filter_backends = (filters.DjangoFilterBackend, ...)
filter_class = DotOrderFilterSet
...
您的查询参数应为:date_range_after
和date_range_before
。
有关DateTimeFromToRangeFilter
的更多详细信息,请参见here。