gpt4 book ai didi

Django - 覆盖保存方法时检查旧值和新值之间的差异

转载 作者:行者123 更新时间:2023-12-03 23:20:58 25 4
gpt4 key购买 nike

谢谢你的时间。

我在 Django 1.4 上,我有以下代码:它是我的 Quest 的覆盖保存方法模型。

@commit_on_success
def save(self, *args, **kwargs):
from ib.quest.models.quest_status_update import QuestStatusUpdate
created = not self.pk

if not created:
quest = Quest.objects.get(pk=self)
# CHECK FOR SOME OLD VALUE
super(Quest, self).save(*args, **kwargs)

我找不到这样做的聪明方法。为了找出旧的实例值,我必须对我当前正在更新的对象进行新查询,这对我来说似乎很愚蠢。

有一个更好的方法吗?

谢谢你们。

弗朗西斯科

最佳答案

您可以将旧值存储在 init 方法中:

def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
self.old_my_field = self.my_field

def save(self, *args, **kwargs):
print self.old_my_field
print self.my_field

您可能可以使用 deepcopy 或类似方法复制整个对象,以便以后在 save 和 delete 方法中使用。

关于Django - 覆盖保存方法时检查旧值和新值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com