1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- # coding=utf-8
- from django.conf import settings
- from rest_framework import serializers
- from apps.store.models import Shop, StoreBrand
- from apps.images.models import Images
- from apps.vehicle.models import Brand
- from utils.exceptions import CustomError
- class ShopSerializer(serializers.ModelSerializer):
- enabled_text = serializers.SerializerMethodField()
- img_url = serializers.SerializerMethodField()
- brands = serializers.SerializerMethodField()
- brand_text = serializers.SerializerMethodField()
- def get_enabled_text(self, obj):
- if obj.enabled:
- return u'是'
- return u'否'
- def get_img_url(self, obj):
- if obj.img:
- return '%s%s' % (settings.MEDIA_URL, obj.img.picture)
- return ''
- def get_brands(self, obj):
- brand_rows = StoreBrand.objects.filter(store=obj)
- if brand_rows.count() > 0:
- return [brand_row.brand_id for brand_row in brand_rows]
- return []
- def get_brand_text(self, obj):
- brand_rows = StoreBrand.objects.filter(store=obj)
- data = []
- for brand_row in brand_rows:
- data.append(brand_row.brand.name)
- return ','.join(data)
- class Meta:
- model = Shop
- fields = '__all__'
- def create(self, validated_data):
- user = self.context['request'].user
- file = self.context['request'].FILES.get('image', None)
- if file:
- validated_data['img'] = Images.objects.employee_addnew(user, Images.SHOP_FILE, file)
- instance = super(ShopSerializer, self).create(validated_data)
- brands = self.context['request'].data.get('brands')
- if brands:
- brands = brands.split(',')
- for item in brands:
- brand = Brand.objects.filter(id=int(item), enabled=True, delete=False).first()
- if not brand:
- raise CustomError(u'所选择的品牌不存在或不可用或已被删除')
- StoreBrand.objects.create(store=instance, brand=brand)
- return instance
|