在更新行之前,我想将其当前结果保存到另一个表中。目前我正在使用pre_save但它似乎没有按预期工作。它为我提供了更新的数据,而不是预先更新的数据。
class Country(models.Model):
name = models.CharField(max_length=16)
def make_copy(sender, **kwargs):
obj = kwargs['instance']
pre_save.connect(make_copy, sender=Country)
例如,如果我将国家/地区名称从美国更改为澳大利亚,则pdb中的obj.name将显示更新后的澳大利亚名称,而不是预先更新的名称USA。
我错过了什么?
答案 0 :(得分:1)
您必须查询数据库才能获取原始对象。 instance
具有更新的对象,可以将其保存到数据库中。
class Country(models.Model):
name = models.CharField(max_length=16)
def make_copy(sender, **kwargs):
obj = kwargs['instance']
try:
orig_obj = Country.objects.get(pk=obj.pk)
except: #If it is a new object
orig_obj = None
pre_save.connect(make_copy, sender=Country)
答案 1 :(得分:0)
以前的数据只存在于数据库中;你需要在你的处理程序中检索它。