Django day25 序列化(*****)

序列化

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



猜你喜欢

转载自www.cnblogs.com/zedong/p/10103988.html
今日推荐