簡體   English   中英

如何在會話之間存儲和讀取Django模型對象的Python列表?

[英]how can I store and read a Python list of Django model objects from and to the session?

我正在尋找一種將Django模型對象放入列表中,然后將其存儲在會話中的方法。 我發現它需要序列化才能存儲在會話中。 因此,當從會話中讀取列表時,我首先將其序列化。

但是后來我希望能夠像以前一樣訪問我的初始對象,但事實證明這是一個DeserializedObject。

有誰知道我應該如何滿足我的要求? 簡而言之,這是我正在嘗試的代碼,但未成功

team1_list = generate_random_playerlist() #generates a list of Player() objects
request.session['proposed_team_1'] = serializers.serialize('json', team1_list)

#some code inbetween

des_list = serializers.deserialize('json', request.session['proposed_team_1'])
for player in des_list : 
    print("name of player:"+player.last_name) #fails

我不會序列化模型實例本身。 只需將其主鍵寫入會話即可,這很容易並且不需要序列化。 然后,您可以在單個查詢中從數據庫檢索查詢集,而不必擔心數據更改,實例丟失等問題。

request.session['player_ids'] = list(players.values_list('pk', flat=True))

players = Player.objects.filter(pk__in=request.session.get('player_ids', []))

如果您的Player實例尚未保存到數據庫中,則可能必須按照自己的方式進行。 然后,通過.object屬性從DeserializedObject獲取實際的模型實例。

for player in des_list : 
    print("name of player:" + player.object.last_name)

請參閱反序列化文檔

暫無
暫無

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

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