關於Django的序列化問題。serializers


  在DRF框架里,ModelSerializers是一個重要的組件。大大的幫組我們節省了數據序列化的過程,真的可以說是良心產品。接手的這個項目用的Django,前人的代碼都是手動序列化的,為了保證風格的一致性我續寫的代碼也都是手動序列化。后來遇到一個問題:有個接口的查詢結果是querySet里的數據有幾千條,而且需要一次性返回,不能做分頁處理。這一下幾千條的遍歷確實是耗費時間的,由此導致了接口的訪問速度過慢。因此想到看有沒有官方優化的序列化功能能來解決這個瓶頸。在某度忙活了好久,查詢到的都是關於DRF框架的ModelSerializers。仔細遍歷完了各個文章,還是找到了一些關於Django serializers的信息。整理如下:

  

from django.core import serializers

order_infos =Order.objects.filter(number=_number,name =_name)
#第一個參數為轉化為的數據格式,第二個參數是queryset對象。(必須是queryset對象,不能是查詢后的列表。不然會報錯 'dict' object has no attribute '_meta') 。
json_data = serializers.serialize('json', order_infos)

  下面是列舉的一些支持序列化的數據格式:

    xml        類似與前端html格式的一種數據格式,用於傳輸和記錄

    yaml        也是一種數據格式,和json很像,可是沒有雙引號,可讀性較強。感興趣的小伙伴自習某度

    json        這個就不說了,寫接口的接觸的最多。。。(多到想吐)

 

完成操作以后的感覺:

  真特娘的慢,第二個參數是queryset,他序列的時候會把所有的字段都給你序列化出來(暫時是沒有找到指定字段序列化的方法),一點沒有ModelSerializers那么貼心。點開源碼進去一瞅,也是用for循環來遍歷的,而且操作的字段更多了,比手動序列化更費時間。到此為止,此路GG,另求他法吧,老子去也!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM