Imagen我有一个模型A
,它有一个名为name
的字段。如何获得pre_save
信号中的先前值和新值?
@receiver(pre_save, sender=A)
def signal_product_manage_latest_version_id(
sender, instance, update_fields=None, **kwargs):
if 'name' in update_fields:
print(instance.name)
当我调用以下代码时,name
是旧值还是新值?
a = A.objects.create(name="John")
a.name = "Lee"
a.save()
答案 0 :(得分:4)
从doc instance
开始,正在保存的实际实例。
通过使用 A
方法显式调用 .get()
的旧实例,
@receiver(pre_save, sender=A)
def signal_product_manage_latest_version_id(sender, instance, update_fields=None, **kwargs):
old_instance = A.objects.get(id=instance.id)
# your code