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中__call__用法实例
Aug 29 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python之reload流程实例代码解析
Jan 29 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
python实现京东秒杀功能
Jul 30 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
Python web如何在IIS发布应用过程解析
May 27 Python
python中操作文件的模块的方法总结
Feb 04 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中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
Python定义一个Actor任务
2020/07/29 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
大学生毕业自荐信
2013/10/10 职场文书
大学生入党思想汇报
2014/01/01 职场文书
乔迁之喜主持词
2014/03/27 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
大学生年度个人总结
2015/02/15 职场文书
开学第一周值周总结
2015/07/16 职场文书
Pytest中conftest.py的用法
2021/06/27 Python
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
MySQL池化框架学习接池自定义
2022/07/23 MySQL