我有一個名爲Goal的模型,另一個名爲Action。這裏我強調一下重要的部分:Django - 反序列化保存ManyToMany字段的對象
class Goal(models.Model):
leaders = models.ManyToManyField(User, null=True)
class Action(models.Model):
before = models.TextField(null=True)
after = models.TextField(null=True)
當用戶編輯一個目標時,我保存一個新的Action對象。此Action對象的屬性之一是之前和之後。之前和之後都是序列化的目標對象。他們稍後將用於記錄Goal對象中發生了什麼變化。
所有屬性正常工作(如標題和描述),問題是所謂的「領袖」一個多對多場,當我反序列化目標對象有:
before = action.before
for obj in serializers.deserialize("xml", before):
before_object = obj
after = action.after
for obj in serializers.deserialize("xml", after):
after_object = obj
,並嘗試與訪問領導人場:
before_object_leaders = before_object.object.leaders.all()
after_object_leaders = after_object.object.leaders.all()
leaders_updated = True
if set(before_object_leaders) == set(after_object_leaders):
leaders_updated = False
before_object_leaders獲取目標表爲目標對象的當前值,而不是在反序列化對象,這就是我想要的價值。 (舊值,更新前)
請幫忙,我瘋了。謝謝!
嘿,非常感謝亞瑟!你的評論讓我意識到了這個問題,我是Django的新手,所以我不知道leaders.all()實際上是再次查詢數據庫。 :) – thyagx