django 解決自定義序列化返回處理數據為null的問題
在接口返回數據時,如果數據庫表中查詢出來的某些字段為null時,在前端需要多處理一些數據異常的情況。
django可以自定義序列化返回處理,將返回的內容限制和預處理再返回到前端。
1.未處理時返回
如圖上,有email、mobile這兩個字段是有可以為空且默認值為null的。
2.to_representation處理
在模型序列化類增加, to_representation方法,以自定義數據處理限制
from rest_framework import serializersfrom .models import UserInfoclass 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的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章: