标签:serialize ali 数据 调用 author name ret method 高级用法
__init__
、__new__
、__call__
方法的执行顺序__new__
方法__new__
:当类实例化对象时优先执行,执行要比__init__
早,产生了一个空的对象,什么都没有
__init__
方法__init__
:当类实例化对象时会执行,与__new__
方法的区别就是__init__
类似穿衣服的人,__new__
类似全裸的人
__call__
方法__call__
:当实例化的对象被调用时触发
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表模型中的方法
需要有个配套的方法,该配套方法的方法名必须是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
标签:serialize ali 数据 调用 author name ret method 高级用法
原文地址:https://www.cnblogs.com/guanxiying/p/13261649.html