django 解决自定义序列化返回处理数据为null的问题


Posted in Python onMay 20, 2020

在接口返回数据时,如果数据库表中查询出来的某些字段为null时,在前端需要多处理一些数据异常的情况。

django可以自定义序列化返回处理,将返回的内容限制和预处理再返回到前端。

1.未处理时返回

django 解决自定义序列化返回处理数据为null的问题

如图上,有email、mobile这两个字段是有可以为空且默认值为null的。

2.to_representation处理

在模型序列化类增加, to_representation方法,以自定义数据处理限制

from rest_framework import serializers
from .models import UserInfo

class UserInfoSerializer(serializers.ModelSerializer):
  class Meta:
    model = UserInfo
    # fields = '__all__'
    fields = (
      'id', 'email', 'date_create', 'mobile', 'email', 'notice_voice', 'notice_email', 'notice_sms',
      'notice_push')

  def to_representation(self, instance):
    data = super().to_representation(instance)
    if not data['email']:
      data['email'] = ""
    if not data['mobile']:
      data['mobile'] = ""
    return data

3.处理后前端获取

django 解决自定义序列化返回处理数据为null的问题

补充知识:Django query查询正常,返回对象为空QuerySet

我出现这个错误的前提条件:

数据为导入的数据,并不是正常从前端添加入库的。

问题现象:

views里获取数据库查询对象集合 obj= models.表名.objects.filter(**kwargs)

控制台debug发现 obj为QuerySet<[]>

拿着query到数据库里执行sql ,还能查出数据,就是没返回

解决问题:

查看数据库字段是否符合models中定义的格式,如,是否有默认值,

django 解决自定义序列化返回处理数据为null的问题

django 解决自定义序列化返回处理数据为null的问题

将数据库为空字段修改成和models一样的,有个快速比对的方法,从前端向数据库添加一条数据,拿这个正式数据和导入数据做比对,哪里不一样,修改哪里即可。

以上这篇django 解决自定义序列化返回处理数据为null的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
使用python调用zxing库生成二维码图片详解
Jan 10 Python
Python 反转字符串(reverse)的方法小结
Feb 20 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
Python创建字典的八种方式
Feb 27 Python
Tensorflow模型实现预测或识别单张图片
Jul 19 Python
Django和Flask框架优缺点对比
Oct 24 Python
Python zip函数打包元素实例解析
Dec 11 Python
python matplotlib实现将图例放在图外
Apr 17 Python
python能做哪方面的工作
Jun 15 Python
Python 使用dict实现switch的操作
Apr 07 Python
python实现126邮箱发送邮件
May 20 #Python
python3.6使用SMTP协议发送邮件
May 20 #Python
Python操作Excel把数据分给sheet
May 20 #Python
python3通过qq邮箱发送邮件以及附件
May 20 #Python
学会python自动收发邮件 代替你问候女友
May 20 #Python
Django中ORM找出内容不为空的数据实例
May 20 #Python
django为Form生成的label标签添加class方式
May 20 #Python
You might like
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
详解vue2.0模拟后台json数据
2019/05/16 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python numpy存取文件的方式
2020/04/01 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
法学专业毕业生自荐信范文
2013/12/18 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python