DRF 序列化组件
自定义 序列化 组件
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__ 就是把所有的字段 显示出来