# coding=utf-8 from rest_framework import serializers from apps.tenant.models import Tenant from apps.tenant.employee.models import Employee from utils.exceptions import CustomError from apps.account.models import User class TenantSerializer(serializers.ModelSerializer) : create_user_name = serializers.CharField(source='create_user.username', read_only=True) create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) username = serializers.SerializerMethodField() class Meta: model = Tenant fields = '__all__' def get_username(self, obj): names = Employee.objects.filter(tenant=obj, user__type=User.TENANT).values('name') name = [] for i in names: name.append(i.get('name')) return ','.join(name) def create(self, validated_data): validated_data['create_user'] = self.context['request'].user if Tenant.is_exist(validated_data['name']): raise CustomError(u'名称为[%s]的租户已存在' % validated_data['name']) instance = super(TenantSerializer, self).create(validated_data) return instance def update(self, instance, validated_data): if instance.delete: raise CustomError(u'租户[%s]已经被删除,禁止修改' % instance.name) if Tenant.is_exist(validated_data['name'], instance.id): raise CustomError(u'名称为[%s]的租户已存在' % validated_data['name']) instance = super(TenantSerializer, self).update(instance, validated_data) return instance