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的函数嵌套的使用方法
Jan 24 Python
Python实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
详解Django之auth模块(用户认证)
Apr 17 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
解决Django中checkbox复选框的传值问题
Mar 31 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
Django数据统计功能count()的使用
Nov 30 Python
浅析Python打包时包含静态文件处理方法
Jan 15 Python
用Python将库打包发布到pypi
Apr 13 Python
python编写五子棋游戏
May 25 Python
python状态机transitions库详解
Jun 02 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
提高PHP编程效率的方法
2013/11/07 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
详解Django通用视图中的函数包装
2015/07/21 Python
python flask 多对多表查询功能
2017/06/25 Python
单利模式及python实现方式详解
2018/03/20 Python
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
大学生作弊检讨书
2014/02/19 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
领导班子对照检查材料
2014/09/22 职场文书
2014年话务员工作总结
2014/11/19 职场文书
采购员工作总结范文
2015/08/12 职场文书
护士业务学习心得体会
2016/01/25 职场文书
高三物理教学反思
2016/02/20 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
Python实战之疫苗研发情况可视化
2021/05/18 Python
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python