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 相关文章推荐
Python编写生成验证码的脚本的教程
May 04 Python
详谈python read readline readlines的区别
Sep 22 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
Python合并多个Excel数据的方法
Jul 16 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
python with (as)语句实例详解
Feb 04 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
Python控制台实现交互式环境执行
Jun 09 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 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脚本数据库功能详解(上)
2006/10/09 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
ucenter通信原理分析
2015/01/09 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
美国眼镜网:GlassesUSA
2017/09/07 全球购物
中学教师管理制度
2014/01/14 职场文书
商场促销活动总结
2014/07/10 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
健康状况证明书
2014/11/26 职场文书
加入学生会自荐书
2015/03/05 职场文书
运动会通讯稿600字
2015/07/20 职场文书
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
springboot实现string转json json里面带数组
2022/06/16 Java/Android