栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

django-反序列化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

django-反序列化

serializers.py文件中

# 员工的序列化器
class StaffSer(serializers.Serializer):
    id = serializers.IntegerField(label='ID', read_only=True)
    name = serializers.CharField(label='员工名称', min_length=2, max_length=10,
                                 allow_blank=True, allow_null=True, trim_whitespace=True)
    sex = serializers.IntegerField(label='性别', default=1)
    phone = serializers.CharField(label='手机号', min_length=11, max_length=11,
                                  allow_null=True, allow_blank=True, trim_whitespace=True)

    # 外键
    department = serializers.PrimaryKeyRelatedField(queryset=Department.objects.all())
    duty = serializers.PrimaryKeyRelatedField(queryset=Duty.objects.all())

    # 序列化字段
    department_name = serializers.SerializerMethodField(read_only=True)

    def get_department_name(self, obj):
        return obj.department.name

    duty_name = serializers.SerializerMethodField(read_only=True)

    def get_duty_name(self, obj):
        return obj.duty.name
        
	# 添加条件
    def validate(self, attrs):
        name = attrs.get('name')
        ...
        phone = attrs.get('phone')
        # phone = '123'
        # 需要导入
        from rest_framework.exceptions import ValidationError
        if not phone.startswith('13'):
            raise ValidationError('手机号不符合')
        return attrs

    # 添加数据-重写
    def create(self, validated_data):
        staff = Staff.objects.create(**validated_data)
        return staff

    # 修改数据-重写
    def update(self, instance, validated_data):
        instance.name = validated_data.get('name')
        instance.save()
        return instance

views.py文件中

# 添加员工信息
def post(self, request):
	name = request.data.get('name')
	
	# 判断员工是否存在
	staff = Staff.objects.filter(name=name)
	if staff:
		return Response('员工已存在')
	
	ser = StaffSerializers(data=request.data)

	# 校验数据
	if ser.is_valid():
		# 保存数据
		ser.save()
		return Response({'code': 200, 'msg': '添加成功'})
	else:
	return Response({'code': 400, 'msg': ser.errors})

# 修改员工信息
def put(self, request, pk):
    # 判断员工是否存在
    staff = Staff.objects.filter(id=pk).first()

    ser = StaffSer(instance=staff, data=request.data, partial=True)
    # 验证信息
    if ser.is_valid():
        ser.save()
        return Response({'code': 200, 'msg': '更新成功'})
    else:
        return Response({'code': 400, 'msg': ser.errors})
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号