zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    tftp服务器
    iw工具的使用
    六、【ioctl】应用程序和驱动程序中的ioctl
    位反转现象(Bit Flip)
    openwrt有线网卡的停用与开启
    寒假小记
    ARMLinux汇编到ADS汇编转换需要注意的问题
    c function pointer example
    (转)解决mysql“Access denied for user 'root'@'localhost'”
    c语言 面向对象的栈
  • 原文地址:https://www.cnblogs.com/guanxiying/p/13261649.html
Copyright © 2011-2022 走看看