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入门教程之if语句的用法
May 14 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
python PyTorch预训练示例
Feb 11 Python
Python 打印中文字符的三种方法
Aug 14 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
详解Python locals()的陷阱
Mar 26 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
利用python做表格数据处理
Apr 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 全文搜索和替换的实现代码
2008/07/29 PHP
.htaccess文件保护实例讲解
2011/02/06 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP中each与list用法分析
2016/01/08 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
node.js实现快速截图
2016/08/27 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
python中xlutils库用法浅析
2020/12/29 Python
在线服装零售商:SheIn
2016/07/22 全球购物
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
我们的节日清明节活动总结
2014/04/30 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python
Python3接口性能测试实例代码
2021/06/20 Python
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server