views.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # coding=utf-8
  2. from rest_framework import generics
  3. from utils import response_ok
  4. from utils.exceptions import CustomError
  5. from .serializers import SeriesSerializer, ModelSerializer, ModelDetailSerializer
  6. from apps.vehicle.filters import SeriesFilter, ModelFilter
  7. from apps.vehicle.models import Series, Model
  8. class SeriesListViewSet(generics.ListAPIView):
  9. queryset = Series.objects.filter(enabled=True, delete=False)
  10. serializer_class = SeriesSerializer
  11. def filter_queryset(self, queryset):
  12. f = SeriesFilter(self.request.GET, queryset=queryset)
  13. return f.qs
  14. def list(self, request, *args, **kwargs):
  15. queryset = self.filter_queryset(self.get_queryset())
  16. serializer = self.get_serializer(queryset, many=True)
  17. return response_ok(serializer.data)
  18. class ModelListViewSet(generics.ListAPIView):
  19. queryset = Model.objects.filter(enabled=True, delete=False)
  20. serializer_class = ModelSerializer
  21. def filter_queryset(self, queryset):
  22. f = ModelFilter(self.request.GET, queryset=queryset)
  23. return f.qs
  24. def list(self, request, *args, **kwargs):
  25. queryset = self.filter_queryset(self.get_queryset())
  26. serializer = self.get_serializer(queryset, many=True)
  27. return response_ok(serializer.data)
  28. class ModelDetailViewSet(generics.RetrieveAPIView):
  29. queryset = Model.objects.filter(enabled=True, delete=False)
  30. serializer_class = ModelDetailSerializer
  31. def retrieve(self, request, *args, **kwargs):
  32. id = request.GET.get('id')
  33. instance = self.queryset.filter(id=id).first()
  34. if not instance:
  35. raise CustomError(u'未找到相应的车辆!')
  36. serializer = self.get_serializer(instance)
  37. return response_ok(serializer.data)