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读取本地文件并解析网页元素的方法
May 21 Python
Python3中详解fabfile的编写
Jun 24 Python
python2.7和NLTK安装详细教程
Sep 19 Python
对python requests发送json格式数据的实例详解
Dec 19 Python
python采集微信公众号文章
Dec 20 Python
python实现维吉尼亚加密法
Mar 20 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
python命名空间(namespace)简单介绍
Aug 10 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
Scrapy框架基本命令与settings.py设置
Feb 06 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
python 下载文件的多种方法汇总
Nov 17 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/09/20 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
Python引用模块和查找模块路径
2016/03/17 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
Python如何根据时间序列数据作图
2020/05/12 Python
Keras loss函数剖析
2020/07/06 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
python实现canny边缘检测
2020/09/14 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
给校长的建议书200字
2014/05/16 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
2014年团队工作总结
2014/11/24 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript