django 解决自定义序列化返回处理数据为null的问题
在接口返回数据时,如果数据库表中查询出来的某些字段为null时,在前端需要多处理一些数据异常的情况。
django可以自定义序列化返回处理,将返回的内容限制和预处理再返回到前端。
1.未处理时返回

如图上,有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 query查询正常,返回对象为空QuerySet
我出现这个错误的前提条件:
数据为导入的数据,并不是正常从前端添加入库的。
问题现象:
views里获取数据库查询对象集合 obj= models.表名.objects.filter(**kwargs)
控制台debug发现 obj为QuerySet<[]>
拿着query到数据库里执行sql ,还能查出数据,就是没返回
解决问题:
查看数据库字段是否符合models中定义的格式,如,是否有默认值,


将数据库为空字段修改成和models一样的,有个快速比对的方法,从前端向数据库添加一条数据,拿这个正式数据和导入数据做比对,哪里不一样,修改哪里即可。
以上这篇django 解决自定义序列化返回处理数据为null的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决Numpy报错:ImportError: numpy.core.multiarray faile
这篇文章主要介绍了解决Numpy报错:ImportError: numpy.core.multiarray failed问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-01-01
Keras Convolution1D与Convolution2D区别说明
这篇文章主要介绍了Keras Convolution1D与Convolution2D区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
这篇文章主要介绍了Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子,本文重点在于scapy有使用上,需要的朋友可以参考下2014-10-10
Python多线程编程(七):使用Condition实现复杂同步
这篇文章主要介绍了Python多线程编程(七):使用Condition实现复杂同步,本文讲解通过很著名的“生产者-消费者”模型来来演示在Python中使用Condition实现复杂同步,需要的朋友可以参考下2015-04-04


最新评论