DRF 序列化组件

本文深入探讨了自定义序列化组件的实现方法,包括如何使用Django Rest Framework中的序列化器来处理一对一和多对多关系。文章详细介绍了自定义序列化字段的过程,以及如何通过ModelSerializer简化序列化类的编写。

自定义 序列化 组件

from rest_framework import serializers
from app01 import models

class BookSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    title = serializers.CharField(required=False, allow_blank=True, max_length=100)
    ############    一对一
    # 这是一个 一对多字段
    # 这个名字 一定要和 orm 里的字段对上
    # 一对多  直接用 对象.publish.email  就出来   但是表里要有 显示的 def __str__(self)  , return self.name publish就显示name了

    publish = serializers.CharField(max_length=34,)

    # -------- 这样也可以   source="publish.name"  就是 直接向source 里取值 不会根据 变量名取值了

    publish = serializers.CharField(max_length=34,source="publish.name")

    ###########多对多
    authors=serializers.SerializerMethodField()

    def get_authors(self,obj):
        ret = []
        for i in obj.authors.all():
            ret.append(i.name)
        return ret

用法

更简洁的序列化类   serializers.ModelSerializer

只需要把 字段 按照列表的形式给 fields 就可以了

 

多对多 一对多  也是自己定义 

###########多对多
    authors=serializers.SerializerMethodField()

    def get_authors(self,obj):
        ret = []
        for i in obj.authors.all():
            ret.append(i.name)
        return ret

 

 

 


 

__all__    就是把所有的字段 显示出来

 

 

 


 

转载于:https://www.cnblogs.com/jiangchunsheng/p/10087300.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值