2017-10-25 7 views
0

私はdjango rest api.canでフィルタバックエンドを使用して2つの日付間のデータを取得しています。日付はurlパラメータとして指定されています。djando rest apiのフィルタバックエンド

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

私はあなたがそうあなたがあなた自身のカスタムfilter_classを作成し、DateTimeFromToRangeFilterを使用することができますDjangoFilterBackendを使用している参照してください。

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_afterdate_range_beforeDateTimeFromToRangeFilterの詳細はhereです。

+0

ありがとうございます.date_range_0とdate_range_1もうまくいきます。 – jsk