我正在使用Django的post_save信号,在保存模型后执行一些语句。
class Mode(models.Model):
name = models.CharField(max_length=5)
mode = models.BooleanField()
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=Mode)
def post_save(sender, instance, created, **kwargs):
# do some stuff
pass
现在,我想根据mode
字段的值是否更改来执行一条语句。结果:
现在,我想根据mode
字段的值是否更改来执行一条语句。
@receiver(post_save, sender=Mode)
def post_save(sender, instance, created, **kwargs):
# if value of `mode` has changed:
# then do this
# else:
# do that
pass
我查看了几个SOF的帖子和一篇博客,但都找不到解决方案。它们都试图使用`pre_save`方法或表单,这不是我的用例。Django文档的post-save信号没有提到直接完成此操作的方法。
下面链接中的答案似乎很有前途,但我不知道如何使用它。我不确定最新的django版本是否支持它,因为我使用了`ipdb`来调试此问题,并发现`instance`变量没有像下面的答案中提到的`has_changed`属性。