123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- # coding=utf-8
- from django.conf import settings
- from rest_framework import serializers
- from utils.exceptions import CustomError
- from apps.base import Formater
- from apps.images.models import Images
- from .models import Product, ProductImg, ProductOrder
- class ProductSerializer(serializers.ModelSerializer):
- category_t = serializers.CharField(source='category.name', read_only=True)
- price_f = serializers.SerializerMethodField()
- enabled_t = serializers.SerializerMethodField()
- create_user_t = serializers.CharField(source='create_user.name', read_only=True)
- cover_url = serializers.SerializerMethodField()
- def get_cover_url(self, obj):
- if obj.cover:
- return '{}{}'.format(settings.MEDIA_URL, obj.cover.picture)
- return ''
- def get_enabled_t(self, obj):
- if obj.enabled:
- return u"是"
- return u"否"
- def get_price_f(self, obj):
- return Formater.formatPriceShow(obj.price)
- class Meta:
- model = Product
- fields = '__all__'
- def validate(self, attrs):
- if 'price' in attrs:
- attrs['price'] = Formater.formatPrice(attrs['price'])
- return attrs
- def create(self, validated_data):
- validated_data['create_user'] = self.context['request'].user
- cover = self.initial_data.get('image', None)
- if not cover:
- raise CustomError(u'商品封面图是必填项!')
- validated_data['cover'] = Images.objects.employee_addnew(validated_data['create_user'], Images.PRODUCT_COVER, cover)
- instance = super(ProductSerializer, self).create(validated_data)
- return instance
- def update(self, instance, validated_data):
- old_cover = None
- cover = self.initial_data.get('image', None)
- if cover:
- old_cover = instance.cover
- validated_data['cover'] = Images.objects.employee_addnew(self.context['request'].user, Images.PRODUCT_COVER, cover)
- instance = super(ProductSerializer, self).update(instance, validated_data)
- if old_cover:
- old_cover.del_images()
- return instance
- class ProductImgSerializer(serializers.ModelSerializer):
- img_url = serializers.SerializerMethodField()
- def get_img_url(self, obj):
- return '{}{}'.format(settings.MEDIA_URL, obj.img.picture)
- class Meta:
- model = ProductImg
- fields = '__all__'
- class ProductOrderSerializer(serializers.ModelSerializer):
- product_name = serializers.CharField(source='product.name', read_only=True)
- name = serializers.CharField(source='customer.name', read_only=True)
- customer_name = serializers.CharField(source='customer_address.name', read_only=True)
- customer_tel = serializers.CharField(source='customer_address.tel', read_only=True)
- area = serializers.CharField(source='customer_address.area', read_only=True)
- addr = serializers.CharField(source='customer_address.addr', read_only=True)
- status_text = serializers.CharField(source='get_status_display', read_only=True)
- create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
- price = serializers.SerializerMethodField()
- amount = serializers.SerializerMethodField()
- def get_price(self, obj):
- return Formater.formatPriceShow(obj.price)
- def get_amount(self, obj):
- return Formater.formatAmountShow(obj.amount)
- class Meta:
- model = ProductOrder
- fields = '__all__'
- def validate(self, attrs):
- if 'price' in attrs:
- attrs['price'] = Formater.formatPrice(attrs['price'])
- return attrs
|