首页 > 其他 > 详细

syl----ModelSerializer序列化

时间:2020-10-27 23:11:44      阅读:49      评论:0      收藏:0      [点我收藏+]

首先创建apps/Serializer.py

在序列化里面导包

from rest_framework import serializers
from user.models import User

在Serializer里面写入

Serializer ,ModelSerializer

def address_validate(data):
# data:是用户提交的地址这个字段的数据(河南省 郑州市)
# 独立校验器
# raise serializers.ValidationError(‘请填写实际地址‘)
# 有错就抛出异常 # 没错就返回数据
return data

class UserSerializer(serializers.ModelSerializer):
# 1.独立校验器:重新设定字段, 替换掉模型中的设定, 重新设定地址的长度为5
# address_validate是自定义的数据校验1函1数1
address=serializers.CharField(max_length=255,min_length=5,validators=[address_validate])

# 2.单一字段验证(validate_字段名), 验证地址
def valudate_address(self,data):
    if data==‘测试‘:
        raise serializers.ValidationError(‘请填写实际地址‘) # 有错就抛出异常
    return data  #没错就返回

# def validate_phone(self, data):
#     # 不符合手机号格式 # raise serializers.ValidationError(‘手机号格式不正确‘)
#     model = self.root.Meta.model
#     num = model.objects.filter(phone=data).count()
#     if num > 0:
#         raise serializers.ValidationError(‘手机号已存在‘)
#     return data

# 3.所有属性验证器
def validate(self, attrs):
    return attrs# 有问题报错
# 没问题返回数据
    # attrs:{"username":"zhangsan", "phone":"18538752511", ....}
    # 所有属性验证器 # self.context 中有request和view上下文
    # self.context[‘view‘].action 可以取到动作 # attrs 是需要序列化的数据
    # raise serializers.ValidationError(‘xxx错误‘)

class Meta:
    model=User #指定表
    # fields = (‘id‘, ) # 临时添加字段也需要写在这里
    fields=‘__all__‘  #所有字段
    # exclude = [‘id‘] # 排除 id 字段
    # read_only_fields = (‘id‘,)  # 指定字段为 read_only,

    # 扩展address: extra_kwargs = {} # 局部替换某些字段的设定, 或者新增设定
    extra_kwargs = {
        "address": {
            "min_length": 5, # 给地址增加 最小长度限制
            "default": ‘默认测试地址‘,
    # 增加默认值
        }}

继承ModelSerializer

class UserUnActiveSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (‘id‘, ‘username‘, ‘is_active‘) # 临时添加字段也需要写在这里 # fields = ‘all‘ # 所有字段

syl----ModelSerializer序列化

原文:https://www.cnblogs.com/wangxiaosai/p/13887885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!