序列化组件:
--Serializer
1、重命名:用source: xx = serializers.CharField(source='name')
2、取出版社名字:
方式一:
-在模型表中重写__str__方法
-publish=serializers.CharField()
方式二:
-用source
-拿出出版社的城市
-publish=serializers.CharField(source='publish.city')
*****如果不指定source,字段必须对应起来,如果指定了source,字段可以任意命名
-source 可以指定字段,也可也指定方法
publish.test这是个方法,会执行该方法,并拿到返回结果
test = serializers.CharField(source='publish.test')
-3 SerializerMethodField,可以指定一个方法
publish=serializers.SerializerMethodField()
# 方法名:叫get_字段名,要传参数,参数是:当前book对象
def get_publish(self,obj):
# obj 是当前book对象
dic={'name':obj.publish.name,'email':obj.publish.email}
return dic
-方法内部可以继续用其他的序列化类
-ModelSerializer
-必须在类中写
class Meta:
model=指定表
# fields = '__all__'
# 指定只取这两个字段
fields = ['nid','name']
# 去掉指定的字段
# exclude=['publish','authors']
# fields,跟exclude不能连用
# 指定深度,就是跨几个表(官方建议小于10,我给你的建议小于3)
# depth = 2
#生成一个序列化的对象,传参数
#序列化多条,记住many=True
book_ser=BookSerializer(ret,many=True)