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 相关文章推荐
pymssql数据库操作MSSQL2005实例分析
May 25 Python
Python中的数学运算操作符使用进阶
Jun 20 Python
Python实现视频下载功能
Mar 14 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
Python网络编程详解
Oct 31 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
简单了解python协程的相关知识
Aug 31 Python
Python如何访问字符串中的值
Feb 09 Python
Python super()函数使用及多重继承
May 06 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 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中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
Python连接Impala实现步骤解析
2020/08/04 Python
小结Python的反射机制
2020/09/28 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
介绍一下代理模式(Proxy)
2014/10/17 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
历史学专业推荐信
2013/11/06 职场文书
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
搞笑老公保证书
2015/02/26 职场文书
医德医风自我评价2015
2015/03/03 职场文书
2015年行政部工作总结
2015/04/28 职场文书