У меня есть пост сигнал в Джанго, где мне нужно, чтобы получить доступ предыдущего значения поля:Получить предыдущее значение поля в post_save сигнала
post_save.connect(callback_function_postsave, sender=Media)
Я знаю, в идеале я должен использовать pre_save для этого:
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
Однако его необходимо получить в post_signal
old_value
, потому что на его основе, я должен решить, следует ли сделать 3-й вызов сторона апи или нет. Я не могу сделать api-вызов в pre_save
, поскольку api использует одну и ту же базу данных и ожидает, что обновленное значение будет выполнено.
Один из возможных способов я могу думать о том, добавить old_value к самому экземпляру, который затем может быть доступен 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"
Есть ли лучший способ для достижения этой цели.
как вы разрешили его? – navyad