码迷,mamicode.com
首页 > 其他好文 > 详细

Serializer的高级用法

时间:2020-07-07 17:21:50      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:serialize   ali   数据   调用   author   name   ret   method   高级用法   

__init____new____call__方法的执行顺序

__new__方法

__new__:当类实例化对象时优先执行,执行要比__init__早,产生了一个空的对象,什么都没有

__init__方法

__init__:当类实例化对象时会执行,与__new__方法的区别就是__init__类似穿衣服的人,__new__类似全裸的人

__call__方法

__call__:当实例化的对象被调用时触发

Serializer高级用法

source的使用

  • 1、返回结果时一般不会直接将数据库字段作为key返回而是通过别名,这个时候就可以使用source来与数据库中真正的字段名进行绑定

    xxx=serializers.CharField(source=‘title‘)
    
  • 2、当我们想要跨表查询某个字段作为返回值时可以使用source,它支持.跨表

    publish=serializers.CharField(source=‘publish.email‘)
    
  • 3、source还可以执行模型类中的方法并将该方法的返回值作为字段的返回结果

    pub_date=serializers.CharField(source=‘test‘) test是Book表模型中的方法
    

SerializerMethodField()的使用

需要有个配套的方法,该配套方法的方法名必须是get_字段名,其返回值就是要显示在前端的内容

authors=serializers.SerializerMethodField()
def get_authors(self,instance):
    # book对象
    authors=instance.authors.all()  # 取出所有作者
    ll=[]
    for author in authors:
        ll.append({‘name‘:author.name,‘age‘:author.age})
        return ll

Serializer的高级用法

标签:serialize   ali   数据   调用   author   name   ret   method   高级用法   

原文地址:https://www.cnblogs.com/guanxiying/p/13261649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!