最佳答案
我使用 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
字段的值是否更改来执行一个语句。
@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 文档中的 https://docs.djangoproject.com/es/1.9/ref/signals/#post-save没有提到这样做的直接方法。
下面的链接中的一个答案看起来很有希望,但我不知道如何使用它。我不确定最新的 django 版本是否支持它,因为我使用了 ipdb
来调试它,发现 instance
变量没有下面答案中提到的属性 has_changed
。