serializers.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # coding=utf-8
  2. from django.conf import settings
  3. from rest_framework import serializers
  4. from apps.usedvehicle.models import UsedVehicle, UsedVehicleImg
  5. from apps.foundation.models import Option
  6. class UsedVehicleSerializer(serializers.ModelSerializer):
  7. status_text = serializers.CharField(source='get_status_display', read_only=True)
  8. brand_name = serializers.CharField(source='brand.name', read_only=True)
  9. gearbox_name = serializers.CharField(source='gearbox.name', read_only=True)
  10. color_name = serializers.CharField(source='color.name', read_only=True)
  11. displacement_name = serializers.CharField(source='displacement.name', read_only=True)
  12. emission_name = serializers.CharField(source='emission.name', read_only=True)
  13. seat_count_name = serializers.CharField(source='seat_count.name', read_only=True)
  14. oil_type_name = serializers.CharField(source='emission.name', read_only=True)
  15. plate_date = serializers.DateField(format='%Y-%m-%d')
  16. factory_date = serializers.DateField(format='%Y-%m-%d')
  17. picture = serializers.SerializerMethodField()
  18. def get_picture(self, obj):
  19. if obj.thumbnail:
  20. return {'width': obj.thumbnail.width, 'height': obj.thumbnail.height, 'url': obj.thumbnail.get_path()}
  21. return ''
  22. class Meta:
  23. model = UsedVehicle
  24. fields = '__all__'
  25. class UsedVehicleDetailSerializer(serializers.ModelSerializer):
  26. status_text = serializers.CharField(source='get_status_display', read_only=True)
  27. brand_name = serializers.CharField(source='brand.name', read_only=True)
  28. gearbox_name = serializers.CharField(source='gearbox.name', read_only=True)
  29. color_name = serializers.CharField(source='color.name', read_only=True)
  30. displacement_name = serializers.CharField(source='displacement.name', read_only=True)
  31. emission_name = serializers.CharField(source='emission.name', read_only=True)
  32. seat_count_name = serializers.CharField(source='seat_count.name', read_only=True)
  33. oil_type_name = serializers.CharField(source='emission.name', read_only=True)
  34. plate_date = serializers.DateField(format='%Y-%m-%d')
  35. factory_date = serializers.DateField(format='%Y-%m-%d')
  36. images = serializers.SerializerMethodField()
  37. def get_images(self, obj):
  38. result = []
  39. rows = UsedVehicleImg.objects.filter(main=obj).values('img__picture', 'img__width', 'img__height')
  40. for row in rows:
  41. url = {'width': row['img__width'], 'height': row['img__height'],
  42. 'url': '%s%s%s' % (settings.SERVER_DOMAIN, settings.MEDIA_URL, row['img__picture'])}
  43. result.append(url)
  44. return result
  45. class Meta:
  46. model = UsedVehicle
  47. fields = '__all__'