serializers.py 5.8 KB

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