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简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
浅谈python常用程序算法
Mar 22 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
python3调用windows dos命令的例子
Aug 14 Python
flask实现验证码并验证功能
Dec 05 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
python连接mysql有哪些方法
Jun 24 Python
Anaconda详细安装步骤图文教程
Nov 12 Python
Python标准库pathlib操作目录和文件
Nov 20 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删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
php生成圆角图片的方法
2015/04/07 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
js类 from qq
2006/11/13 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
Python文件和目录操作详解
2015/02/08 Python
Python使用OpenCV进行标定
2018/05/08 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
如何卸载python插件
2020/07/08 Python
英国在线药房:Express Chemist
2019/03/28 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
校庆筹备方案
2014/03/30 职场文书
表彰大会策划方案
2014/05/13 职场文书
会议接待欢迎标语
2014/10/08 职场文书
灵山大佛导游词
2015/02/04 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server