serializers.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # coding=utf-8
  2. import datetime
  3. from rest_framework import serializers
  4. from utils.exceptions import CustomError
  5. from apps.order.models import ShoppingCart
  6. class ShoppingCartSerializer(serializers.ModelSerializer):
  7. class Meta:
  8. model = ShoppingCart
  9. fields = '__all__'
  10. def validate(self, attrs):
  11. if 'quantity' in attrs:
  12. try:
  13. quantity = int(attrs['quantity'])
  14. except:
  15. raise CustomError(u'商品数量错误,请修改!')
  16. if quantity <= 0:
  17. raise CustomError(u'商品数量错误,请修改!')
  18. return attrs
  19. def create(self, validated_data):
  20. validated_data['customer'] = self.context['request'].customer
  21. if int(validated_data['quantity']) <= 0:
  22. raise CustomError('商品数量错误,请修改!')
  23. instance = ShoppingCart.objects.filter(commodity_details=validated_data['commodity_details'], customer=validated_data['customer']).first()
  24. if instance:
  25. instance.quantity += validated_data['quantity']
  26. instance.save()
  27. else:
  28. instance = super(ShoppingCartSerializer, self).create(validated_data)
  29. return instance