序列化
1、序列化组件是干什么用的?
2、如何使用序列化组件
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