對於我的Django應用程序,我正在爲所有對象保留完整的編輯歷史記錄。作爲其中的一部分,我已經覆蓋了模型的save()方法,其中一部分如下所示:在保存之前製作對象初始狀態的副本
# Replicate the current version (from the db) with all attributes unchanged
new_ver = self.__class__.objects.get(pk=self.pk).save(force_insert=True)
# Update the current version in the database with the new attributes
super(CodexBaseClass, self).save(*args, force_update=True, **kwargs)
則傳遞到save()方法中的「自我」是,是該對象的新版本由表單生成。此代碼試圖執行的操作是:
(1)製作當前出現在數據庫中的對象的副本(即:複製數據,因爲它是在表單修改之前進行的),然後強制插入此對象數據,因此它被複製爲新行
(2)使用通過表單提交的新對象的新版本更新現有行。
問題在於兩行代碼的第一行 - 它生成了DoesNotExist異常。該對象確實存在,所以我現在認爲問題在於它試圖讀取的數據庫行當前被鎖定。
所以我的問題是:有沒有辦法我可以修改/替換第一行,以便我有一個初始數據的副本,因爲它是在表單修改之前?
感謝。
我已經試過了。它給出了相同的例外。 自我。__class __。objects.get(pk = self.pk) 是似乎是問題的部分。 self.pk引用的對象是由UpdateView編輯的對象,所以看起來我無法從數據庫中讀取該特定對象,至少不能使用此方法。 – Ben
你試過我的答案嗎? – e4c5