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 测试实现方法
Dec 24 Python
Python中正则表达式的详细教程
Apr 30 Python
在Python中操作文件之truncate()方法的使用教程
May 25 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
Python金融数据可视化汇总
Nov 17 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
python 实现弹球游戏的示例代码
Nov 17 Python
python必学知识之文件操作(建议收藏)
May 30 Python
详解Python类和对象内容
Jun 22 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中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php中socket的用法详解
2014/10/24 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
python读取注册表中值的方法
2013/04/08 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
python 图片去噪的方法示例
2019/07/09 Python
python实现日志按天分割
2019/07/22 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
项目合作协议书
2014/04/16 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
物理学专业求职信
2014/07/04 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
个人融资协议书
2014/10/02 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
教师求职信怎么写
2015/03/20 职场文书
管辖权异议上诉状
2015/05/23 职场文书
致运动员的广播稿
2015/08/19 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis