フィールドの前の値にアクセスする必要があるdjangoにポストシグナルがあります:
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
old_value
ただし、 inを取得することが不可欠ですpost_signal
。これに基づいて、サードパーティの API 呼び出しを行うかどうかを決定する必要があるためです。pre_save
APIは同じデータベースを使用しており、更新された値がコミットされることを期待しているため、API呼び出しを行うことができません。
考えられる 1 つの方法は、post_save でアクセスできるインスタンス自体に old_value を追加することです。
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"
これを達成するためのより良い方法はありますか。