serializers.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. # coding=utf-8
  2. from django.db.models import Q
  3. from rest_framework import serializers
  4. from apps.customer.models import *
  5. from apps.vehicle_order.models import *
  6. from apps.product_order.models import *
  7. from apps.base import Formater
  8. from utils.exceptions import CustomError
  9. class CustomerVehicleSerializer(serializers.ModelSerializer):
  10. class Meta:
  11. model = CustomerVehicle
  12. fields = '__all__'
  13. class CustomerAddressSerializer(serializers.ModelSerializer):
  14. full_addr = serializers.SerializerMethodField()
  15. def get_full_addr(self, obj):
  16. full_addr = obj.area + obj.addr
  17. return full_addr
  18. class Meta:
  19. model = CustomerAddress
  20. fields = '__all__'
  21. def create(self, validated_data):
  22. customer = self.context['request'].customer
  23. validated_data['customer'] = customer
  24. if validated_data['default']:
  25. CustomerAddress.objects.filter(Q(customer=customer), Q(delete=False)).update(default=False)
  26. instance = super(CustomerAddressSerializer, self).create(validated_data)
  27. return instance
  28. def update(self, instance, validated_data):
  29. if instance.delete:
  30. raise CustomError(u'该收货地址已经被删除,禁止操作')
  31. if validated_data['default']:
  32. CustomerAddress.objects.filter(Q(customer=instance.customer), Q(delete=False), ~Q(id=instance.id)).update(default=False)
  33. instance = super(CustomerAddressSerializer, self).update(instance, validated_data)
  34. return instance
  35. class ProductOrderSerializer(serializers.ModelSerializer):
  36. product_name = serializers.CharField(source='product.name', read_only=True)
  37. name = serializers.CharField(source='customer.name', read_only=True)
  38. customer_name = serializers.CharField(source='customer_address.name', read_only=True)
  39. customer_tel = serializers.CharField(source='customer_address.tel', read_only=True)
  40. area = serializers.CharField(source='customer_address.area', read_only=True)
  41. addr = serializers.CharField(source='customer_address.addr', read_only=True)
  42. status_text = serializers.CharField(source='get_status_display', read_only=True)
  43. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  44. price = serializers.SerializerMethodField()
  45. amount = serializers.SerializerMethodField()
  46. def get_price(self, obj):
  47. return Formater.formatPriceShow(obj.price)
  48. def get_amount(self, obj):
  49. return Formater.formatAmountShow(obj.amount)
  50. class Meta:
  51. model = ProductOrder
  52. fields = '__all__'
  53. class VehicleDriveReserveSerializer(serializers.ModelSerializer):
  54. shop_name = serializers.CharField(source='shop.name', read_only=True)
  55. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  56. series_name = serializers.CharField(source='model.series.name', read_only=True)
  57. model_name = serializers.CharField(source='model.name', read_only=True)
  58. customer_name = serializers.CharField(source='customer.name', read_only=True)
  59. status_text = serializers.CharField(source='get_status_display', read_only=True)
  60. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  61. date = serializers.DateField(format='%Y-%m-%d')
  62. img1_url = serializers.SerializerMethodField()
  63. img2_url = serializers.SerializerMethodField()
  64. def get_img1_url(self, obj):
  65. if obj.img1:
  66. return '%s%s' % (settings.MEDIA_URL, obj.img1.picture)
  67. return ''
  68. def get_img2_url(self, obj):
  69. if obj.img2:
  70. return '%s%s' % (settings.MEDIA_URL, obj.img2.picture)
  71. return ''
  72. class Meta:
  73. model = VehicleDriveReserve
  74. fields = '__all__'
  75. class VehicleInquirySerializer(serializers.ModelSerializer):
  76. shop_name = serializers.CharField(source='shop.name', read_only=True)
  77. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  78. series_name = serializers.CharField(source='model.series.name', read_only=True)
  79. model_name = serializers.CharField(source='model.name', read_only=True)
  80. customer_name = serializers.CharField(source='customer.name', read_only=True)
  81. status_text = serializers.CharField(source='get_status_display', read_only=True)
  82. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  83. displace_text = serializers.SerializerMethodField()
  84. def get_displace_text(self, obj):
  85. return obj.displace and u'是' or u'否'
  86. class Meta:
  87. model = VehicleInquiry
  88. fields = '__all__'
  89. class UsedVehicleInquirySerializer(serializers.ModelSerializer):
  90. brand_name = serializers.CharField(source='brand.name', read_only=True)
  91. customer_name = serializers.CharField(source='customer.name', read_only=True)
  92. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  93. status_text = serializers.CharField(source='get_status_display', read_only=True)
  94. gender_text = serializers.CharField(source='get_gender_display', read_only=True)
  95. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  96. class Meta:
  97. model = UsedVehicleInquiry
  98. fields = '__all__'
  99. class UsedVehicleEstimateSerializer(serializers.ModelSerializer):
  100. brand_name = serializers.CharField(source='brand.name', read_only=True)
  101. customer_name = serializers.CharField(source='customer.name', read_only=True)
  102. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  103. status_text = serializers.CharField(source='get_status_display', read_only=True)
  104. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  105. plate_date = serializers.DateField(format='%Y-%m-%d')
  106. class Meta:
  107. model = UsedVehicleEstimate
  108. fields = '__all__'