DRF中的模型序列化是什么

模型序列化的作用主要有三个

1.序列化数据用于将模型序列化成JSON格式的对象,便于数据返回

2.表单验证在表单请求中,用于验证用户上传的数据是否满足需要

3.数据操作可用于数据更新、数据创建、数据保存等

表单字段验证

指定需要序列化的字段时,可设置字段类型、默认值、可读或可写、验证错误提示信息等,然后针对表单字段进行验证。表单字段验证有三种方式

1.序列化字段,使用参数形式进行制定

比如,字段name数据类型为字符串,max_length指定最大长度,必须输入,且使用error_message设置验证失败的提示信息

#最大长度为50,required=True必须输入,

name=serializer.CharField(max_length=50,
                          required=True,
                          error_messages={'required':'name必须传递'})

2.重写validate(self,attrs)方法进行验证

参数attrs包含所有字段,只需要自定义验证逻辑,如果不通过,则抛出serializers.ValidationError异常即可

比如,验证name中必须包含关键字 【深圳】,否则抛出异常(代表验证失败)

def validate(self,attrs):
    print(attrs)
    if '深圳' not in attrs.get('name'):
        raise serializers.ValidationError('名称中没有包含【深圳】,验证失败!')
    return attrs

3.重写validate_字段名(self,value)方法,单独针对某个字段进行验证

def validate_name(self,value):
    if '深圳' not in name:
        raise serializers.ValidationError('名称没有包含深圳,验证不通过')
    retrun name

4.重写创建、更新方法

update( self, instance, validated_data )    用于更新数据,将参数 validated_data 中的数据更新到 instance 中

create(self, validated_data)      validated_data 作为关键字参数,用于创建模型

class GoodsSerializer(serializers.Serializer):
    #自动生成的字段,只涉及读取的场景
    id=serializers.IntergerField(read_only=True)
    name=serializers.Charfield(max_length=50,
                                required=True,
                                error_message={
                                        'required':'name参数必须要传递'})
    def update(self,instance,validated_data):
        '''
          更新数据,将validate_data中的数据更新到instance中
        '''
        #修改数据
        instance.name=validated_data.get('name',instance.name)
        #保存更新
        instance.save()
        return instance

    def create(self,validated_data):
        '''
        创建数据
        '''
        #Goods模型
        return Goods.objects.create(**validated_data)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值