gpt4 book ai didi

django 如何在 pre_save 函数中获取旧值和新值

转载 作者:行者123 更新时间:2023-12-03 18:41:01 25 4
gpt4 key购买 nike

假设我有一个名为 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()

最佳答案

doc instance 实际实例 被保存

您将通过使用 A 方法显式调用它来获得 .get() 的旧实例,

@receiver(pre_save, sender=A)
def signal_product_manage_latest_version_id(sender, instance, update_fields=None, **kwargs):
try:
old_instance = A.objects.get(id=instance.id)
except A.DoesNotExist: # to handle initial object creation
return None # just exiting from signal
# your code to with 'old_instance'

关于django 如何在 pre_save 函数中获取旧值和新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51775506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com