Serializer的高级用法

Posted guanxiying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Serializer的高级用法相关的知识,希望对你有一定的参考价值。

__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的高级用法的主要内容,如果未能解决你的问题,请参考以下文章

Python切片中的误区与高级用法

前端框架怎么用??用的好处是什么?

JavaScript笔试题(js高级代码片段)

c_cpp 加载源图像固定用法(代码片段,不全)

Django框架(十九)—— 序列化组件(serializer)

SQL Select 语句的用法