django-restframework之序列化类ModelSerializer

18 篇文章 0 订阅
4 篇文章 0 订阅

之前使用的serializers.Serializer
大多是都是自定义书写的
在插入数据以及修改数据的时候必须要手写create以及update方法

返回什么字段,也需要手写选择

于是,针对这些弊端,更完善的序列化类的封装ModelSerializer就出现了

下面贴一段代码,可以完全代替之前文章中的序列化类,
而且完全支持更新与新增
并且可以通过extra_kwargs定义新增时才会出现的字段
read_only定义只读字段,在新增时不出现

class BookSerialize(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['title','price','publish','author','publish_company','author_list']
        extra_kwargs = {
            'publish':{'write_only':True},
            'author': {'write_only': True},
        }

    publish_company = serializers.CharField(read_only=True,source='publish.company',max_length=32)
    author_list = serializers.SerializerMethodField()

    def get_author_list(self,book_obj):
        author_list = list()
        for author in book_obj.author.all():
            author_list.append(author.name)
        return author_list

好了,序列化类的进阶分享就到这

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值