Django前后端分离序列化器使用

#Django前后端分离序列化器使用
##用户与用户身份模型

class UserIdenty(models.Model):
    name = models.CharField(max_length=32)

    class Meta:
        db_table = 'tb_useridenty'
        managed = False

    def __str__(self):
        return self.name


class User(models.Model):

    wechat_nickname =  models.CharField(max_length=64,null=True,blank=True)
    wechat_openid = models.CharField(max_length=64, unique=True)
    wechat_headimgurl =  models.CharField(max_length=254,null=True,blank=True)

    user_status = models.BooleanField(default=True)
    user_identy = models.ForeignKey(UserIdenty, on_delete=models.SET_DEFAULT, default=1)
    # 注册时间 设置格式
    create_time = models.DateTimeField(auto_now_add=True)
    #  最后一次登录时间
    last_login_time = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'tb_user'
        managed = False

    def __str__(self):
        return self.wechat_nickname

##用户模型序列化

class UserSerializer(CustomModelSerializer):
    create_time = serializers.DateTimeField(format='%Y-%m-%d',required=False)
    last_login_time = serializers.DateTimeField(format='%Y-%m-%d',required=False)
    user_identy = serializers.CharField(max_length=20,required=False)
    class Meta:
        model = User
        fields = [
            'id',
            'wechat_nickname',
            'wechat_headimgurl',
            'wechat_openid',
            'user_identy',
            'user_status',
            'create_time',
            'last_login_time',
        ]
        extra_kwargs = {
            'id':{"read_only":True},
            "create_time":{"read_only":True},
            "last_login_time":{"read_only":True},
            'wechat_openid':{"required":False},
            "user_identy":{"required":False}
        }
	
    def validate_user_identy(self, value):
        try:
            user_identy = UserIdenty.objects.filter(name=value).first() or UserIdenty.objects.filter(id=value).first()
        except Exception as e:
            raise serializers.ValidationError("身份类型不存在")
        if not user_identy:
            raise serializers.ValidationError("身份类型不存在")

        return user_identy

    def deal_user_identy(self,instance):
        # print(f"instance:",instance.user_identy)
        return instance.user_identy.name


class UserIdentySerializer(CustomModelSerializer):
    class Meta:
        model = UserIdenty
        fields = [
            'id',
            'name',
        ]
        extra_kwargs = {
            'id':{"read_only":True},
        }

validate_user_identy用于对输入数据返回一个可以绑定user_identy要处理返回的id或则name(反序列化

deal_user_identy用于获取用户绑定身份的名称(序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值