# coding=utf-8 import datetime from rest_framework import serializers from utils.exceptions import CustomError from apps.order.models import ShoppingCart class ShoppingCartSerializer(serializers.ModelSerializer): class Meta: model = ShoppingCart fields = '__all__' def validate(self, attrs): if 'quantity' in attrs: try: quantity = int(attrs['quantity']) except: raise CustomError(u'商品数量错误,请修改!') if quantity <= 0: raise CustomError(u'商品数量错误,请修改!') return attrs def create(self, validated_data): validated_data['customer'] = self.context['request'].customer if int(validated_data['quantity']) <= 0: raise CustomError('商品数量错误,请修改!') instance = ShoppingCart.objects.filter(commodity_details=validated_data['commodity_details'], customer=validated_data['customer']).first() if instance: instance.quantity += validated_data['quantity'] instance.save() else: instance = super(ShoppingCartSerializer, self).create(validated_data) return instance