serializers.py 2.8 KB

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