rest_framework中的Serializer

本文详细探讨了rest_framework中Serializer类的基本用法和灵活性。重点介绍了如何实现create和update方法,以及自定义验证过程,包括validate_title和validate方法。同时提到了嵌套Serializer的情况,指出了在处理嵌套数据时可能遇到的问题和解决方案。实际应用中,ModelSerializer更为常见。
摘要由CSDN通过智能技术生成

研究了许久,记录一下

serializer类是最简单的序列化基类,封装也是最低级的,由此可以推出也就是灵活的,因为你自己要写的东西很多,就很灵活。

1、首先 ,用这个类你要实现两个方法,create和update,如下面官方文档所示:

class CommentSerializer(serializers.Serializer):
    email = serializers.EmailField()
    content = serializers.CharField(max_length=200)
    created = serializers.DateTimeField()

    def create(self, validated_data):
        return Comment(**validated_data)

    def update(self, instance, validated_data):
        instance.email = validated_data.get('email', instance.email)
        instance.content = validated_data.get('content', instance.content)
        instance.created = validated_data.get('created', instance.created)
        return instance

解释一下,create是新建的的时候用的,参数validated_data就是客户端传过来的参数。update中instance就是数据库中查询出来的model的object,调用方式如下:

# .save() will create a new instance.
serializer = CommentSerializer(data=data)

# .save() will update the existing `comment` instance.
serializer = CommentSerializer(comment, data=data)

2、有时候你可能需要传入的validated_data不仅包含模型中的字段,还有额外的需要用的,这个时候直接穿进去就行,用的时候直接validated_data.*  就可以出来了 见下面:

serializer.save(owner=request.user)
然后:
seria
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值