serializers.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # coding=utf-8
  2. import json
  3. from django.conf import settings
  4. from rest_framework import serializers
  5. from django.db.models import Q
  6. from apps.order.models import *
  7. from apps.base import Formater
  8. from utils.exceptions import CustomError
  9. class OrderSerializer(serializers.ModelSerializer):
  10. status_text = serializers.CharField(source='get_status_display', read_only=True)
  11. customer_name = serializers.CharField(source='customer.name', read_only=True)
  12. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  13. total_amount = serializers.SerializerMethodField()
  14. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  15. express_info = serializers.SerializerMethodField()
  16. dispatch_user_text = serializers.CharField(source='dispatch_user.employee.name', read_only=True)
  17. dispatch_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  18. cancel_user_text = serializers.CharField(source='cancel_user.employee.name', read_only=True)
  19. cancel_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  20. class Meta:
  21. model = Order
  22. fields = '__all__'
  23. def get_total_amount(self, obj):
  24. return Formater.formatValueShow(obj.total_amount)
  25. def get_express_info(self, obj):
  26. if obj.express_no and obj.express_company:
  27. return '{},{}'.format(obj.express_no, obj.express_company.name)
  28. return ''
  29. class OrderDetailsSerializer(serializers.ModelSerializer):
  30. commodity_name = serializers.CharField(source='commodity.name', read_only=True)
  31. price = serializers.SerializerMethodField()
  32. amount = serializers.SerializerMethodField()
  33. images = serializers.SerializerMethodField()
  34. class Meta:
  35. model = OrderDetails
  36. fields = '__all__'
  37. def get_price(self, obj):
  38. return Formater.formatValueShow(obj.price)
  39. def get_amount(self, obj):
  40. return Formater.formatValueShow(obj.amount)
  41. def get_images(self, obj):
  42. if obj.commodity.show_image:
  43. return obj.commodity.show_image.get_path()
  44. return ''