当前位置:
首页 > Python基础教程 >
-
序列化类中的自定义字段设置
序列化类中的自定义字段设置
1.针对具有choices属性的字段的用法
这类型字段格式都是一个字典类型,数据库中存储key,给客户端显示的是对应的value,但是正常的数据库操作只能读取key,拿不到value,这个时候需要用到source方法。
Note
格式为:source = 'get_提取的字段名_display',即可显示value
class UserInfoSerializer(serializers.Serializer):
user_type = serializers.CharField(source='get_user_type_display')
2.针对外键的用法
如果我们需要在序列化类中通过本类获得外键关联的类的具体字段信息,那么也需要用到source方法,格式上略有不同。
Note
格式为:source = '本类中定义的外键名.希望获得的字段名'
本类中关联的外键名实质上就是外键的实例化对象,可以通过对象.属性的方式获得
class UserInfoSerializer(serializers.Serializer):
group = serializers.CharField(source='usergroup.title')
3.针对多对多关系的用法
多对多关系中,如果用哪个第二种方式去编写的代码获得不到具体的字段信息,本类中定义的外键名.all得到的是由具体对象组成的列表,如果希望获得对应的每一个对象的具体字段信息,需要自定义个函数来执行
Note
- 字段类型必须是:serializers.SerializerMethodField()
- 自定义函数参数传递为row, 通过row.关联的字段名.all()获取所对多中所有的关联对象信息
class UserInfoSerializer(serializers.Serializer):
role = serializers.SerializerMethodField()
def get_role(self, row):
row_obj_list = row.role.all()
# 获取到对应的所有对象列表
ret = {}
for item in row_obj_list:
ret[item.id] = item.title
# 由于获得的是一个对象列表,所以我们需要遍历出每一个对对象,再通过对象来获得每一个字段信息
return ret
Note
自定义的设置在ModelSerializer类下同样适用
4.自动序列化连表操作:
class UserInfoSerializer1(serializers.ModelSerializer):
user_type = serializers.CharField(source='get_user_type_display')
usergroup = serializers.CharField(source='usergroup.title')
class Meta:
model = UserInfo
fields = ['id', 'user_type','usergroup', 'role']
depth = 1
# 自动序列化连表操作:depth表示的是在从数据库中获取数据是的深度,默认为0,表示只取最外层,当1的时候指的是再往下取一层,django设置的最大深度为10,但实际的开发中最好不要超过三层
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式