serializers.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # coding=utf-8
  2. import datetime
  3. from rest_framework import serializers
  4. from .models import *
  5. from django.conf import settings
  6. from utils.booleancharfield import PriceShowCharField
  7. from apps.base import Formater
  8. class OrderSerializer(serializers.ModelSerializer):
  9. payment_name = serializers.CharField(source='get_payment_display', read_only=True)
  10. create_user_text = serializers.CharField(source='create_user.username', read_only=True)
  11. status_text = serializers.CharField(source='get_status_display', read_only=True)
  12. total_amount = PriceShowCharField(read_only=True)
  13. actual_amount = PriceShowCharField(read_only=True)
  14. class Meta:
  15. model = Order
  16. fields = '__all__'
  17. def create(self, validated_data):
  18. validated_data['create_user'] = self.context['request'].user
  19. instance = super(OrderSerializer, self).create(validated_data)
  20. instance.no = instance.get_no()
  21. instance.save()
  22. return instance
  23. class CouponSerializer(serializers.ModelSerializer):
  24. create_user_text = serializers.CharField(source='create_user.username', read_only=True)
  25. amount = PriceShowCharField(read_only=True)
  26. class Meta:
  27. model = Coupon
  28. fields = '__all__'
  29. def create(self, validated_data):
  30. validated_data['create_user'] = self.context['request'].user
  31. instance = super(CouponSerializer, self).create(validated_data)
  32. instance.save()
  33. return instance
  34. class ShoppingCartSerializer(serializers.ModelSerializer):
  35. name = serializers.CharField(source='commodity.name', read_only=True)
  36. stock = serializers.CharField(source='commodity.stock', read_only=True)
  37. price = serializers.SerializerMethodField()
  38. images = serializers.SerializerMethodField()
  39. def get_price(self, obj):
  40. return Formater.formatAmountShow(obj.commodity.price * obj.commodity.discount)
  41. def get_images(self, obj):
  42. if obj.commodity.main_image:
  43. img = Upload.objects.filter(id=obj.commodity.main_image.id).first()
  44. if img:
  45. return img.get_path()
  46. return ''
  47. class Meta:
  48. model = ShoppingCart
  49. fields = (
  50. 'id', 'name', 'price', 'stock', 'images', 'quantity', 'commodity'
  51. )
  52. def create(self, validated_data):
  53. validated_data['create_user'] = self.context['request'].user
  54. validated_data['quantity'] = validated_data.get('quantity')
  55. instance = ShoppingCart.objects.filter(commodity=self.initial_data['commodity'],
  56. create_user=validated_data['create_user']).first()
  57. if instance:
  58. instance.quantity += validated_data['quantity']
  59. instance.save()
  60. else:
  61. instance = super(ShoppingCartSerializer, self).create(validated_data)
  62. return instance