Получить предыдущее значение поля в сообщении _сохранить сигнал

У меня есть почтовый сигнал в django, где мне нужно получить доступ к предыдущему значению поля:

post_save.connect(callback_function_postsave, sender=Media)

Я знаю, что в идеале я должен использовать предварительное сохранение _для этого :

pre_save.connect(callback_function_presave, sender=Media)

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

. Тем не менее, крайне важно получить old_valueв post_signal, потому что на его основе я должен решить, делать ли вызов стороннего API или нет. Я не могу сделать вызов API в pre_save, так как API использует ту же базу данных и ожидает обновленное зафиксированное значение.

Один из возможных способов, который я могу придумать, — это добавить старое значение _к самому экземпляру, к которому затем можно получить доступ по почте _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"

Есть ли лучший способ добиться этого.

5
задан jerrymouse 7 August 2012 в 10:30
поделиться