を置くべき
class Rent(APIView):
"""
List all the rents if token is not provided else a token specific rent
"""
serializer_class = RentSerializer
filter_backends = (DjangoFilterBackend,)
filter_fields = ('city', 'place', 'property_category',)
search_fields = ('=city', '=place')
def get(self, request, token=None, format=None):
reply={}
try:
rents = Rental.objects.all()
if token:
rent = Rental.objects.get(token=token)
reply['data'] = self.serializer_class(rent).data
else:
reply['data'] = self.serializer_class(rents, many=True).data
except Rental.DoesNotExist:
return error.RequestedResourceNotFound().as_response()
except:
return error.UnknownError().as_response()
else:
return Response(reply, status.HTTP_200_OK)
DjangoFilterBackendの機能を使用するには、GenericViewSet
のfilter_queryset
メソッドを組み込むことができます。これはAPIView
から継承し、DRFのすべての特定の「汎用」ビュークラスにつながるDRFクラスです。それは次のようになります。ここでは
def filter_queryset(self, queryset):
"""
Given a queryset, filter it with whichever filter backend is in use.
You are unlikely to want to override this method, although you may need
to call it either from a list view, or from a custom `get_object`
method if you want to apply the configured filtering backend to the
default queryset.
"""
for backend in list(self.filter_backends):
queryset = backend().filter_queryset(self.request, queryset, self)
return queryset
https://github.com/encode/django-rest-framework/blob/master/rest_framework/generics.py
このビューの目的はオブジェクトのリストを返すように見えるので、 'ListAPIView'ですか? – ChidG
私はこのビューのすべてを削除、更新、削除しました。また、ListAPIViewとRetrieveAPIViewではなく、1つの家賃を表示するか、1つのget関数ですべての家賃を行っています。 – Serenity
DRFの機能を複製しました。ビューセット – ChidG