获取保存后符号中字段的上一个值

2024-10-01 11:38:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在django中有一个post信号,我需要访问字段的前一个值:

post_save.connect(callback_function_postsave, sender=Media)

我知道理想情况下,我应该使用pre_save进行以下操作:

^{pr2}$

但是,必须在post_signal中获得old_value,因为基于它,我必须决定是否进行第三方api调用。我不能在pre_save中进行api调用,因为api正在使用同一个数据库,并且需要提交更新后的值。在

我可以想到的一种可能的方法是将旧的_值添加到实例本身,然后通过post_save访问该实例:

def callback_function_presave(sender, instance,*args,**kwargs):
try:
    instance.old_value = sender.objects.get(pk=instance.pk).field
except sender.DoesNotExist:
    return

def callback_function_postsave(sender, instance,*args,**kwargs):
try:
    old_value = instance.old_value
except:
    print "This is a new entry"

有没有更好的方法来实现这个目标呢。在


Tags: 实例方法instanceapivaluesavedefcallback
1条回答
网友
1楼 · 发布于 2024-10-01 11:38:20

不幸的是,post\u save信号没有给出旧值(post_save)。因此,在模型中存储旧值似乎是一个不错的解决方案。在

我会这样写pre_save:

def save_old_value(sender, instance, *args, **kwargs):
    if instance.id:
        instance.old_value = instance.__class__.objects.get(id=instance.id).old_value

相关问题 更多 >