簡體   English   中英

如何在Django中序列化多種類型的對象以進行JSON轉換?

[英]how to serialize multiple types of objects in django for json conversion purpose?

在我的Django應用中,我需要從兩個不同的表(models.py類)中獲取字段,讓我們說一個表中的用戶名和其他表中的其他信息。 因為我使用values_list檢索它們,所以該字段將在from的列表中。 但是,我需要串聯這兩個列表並使用序列化程序機制,以便進一步從中准備一個json。 Django的默認序列化器不支持此功能。 django serilizer是否還有其他替代方法可支持列表中不同類型的對象? 樣例代碼:

models.py中projectrunlog表中的字段

user_project_list = projectrunlog_object.values_list('user_key','project_run_date','project_run_status') 

models.py中用戶信息表中的字段

user_name = User_obj.values_list('user_name')

不確定,但想嘗試類似的方法,並在field和fields2中制作一個json

fields = serializers.serialize('json', list(projectrunlog_object), fields = ('user_key','project_run_date','project_run_status'))
fields2 = serializers.serialize('json', list(User_obj), fields = ('user_name'))

因此,在我的json中,我也希望user_name以及其他四個字段一起使用,並且可以無縫工作,而無需知道user_name來自不同的表。 請建議該怎么做。

正如GwynBleidD建議的那樣,我無法執行:json.dumps(list(user_project_list)),因為在這里,用戶密鑰實際上是一個UUID字段。 它顯示錯誤為“ UUId不可序列化JSON”。 我正在使用Django 1.8,其中UUID實現為默認設置。 任何解決方案?

序列化器用於序列化django對象,現在您有了元組列表,因此django序列化器將無法處理它。

如果要將這兩個列表連接在一起,則不僅必須從User_obj獲取user_name ,還必須具有user_key (id?)才能將其與第二個模型連接。 如果user_key實際上是ForeignKey ,則可以執行以下操作:

user_project_list = projectrunlog_object.values_list('user_key__user_name','project_run_date','project_run_status')

如果沒有,則必須使用python自行處理。

創建字典或元組列表后,您不必運行django序列化程序,普通的json序列化程序將完成此工作:

json.dumps(list(user_project_list))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM