Django - 在行动时发送通知的问题

时间:2014-04-13 11:34:46

标签: django

当有人推荐他们分享的内容时,我想向用户发送通知。我正在使用django-model-changes,问题类似于Django - send email on model change。所以在上述案例中,我有......

class Recommendation(ChangesMixin, models.Model):
    recommend = models.BooleanField(default=None)

然后......

@receiver(post_save, sender=Recommendation)
def new_recommendation(sender, instance=None, created=False, **kwargs):

...

if created or instance.previous_instance().recommend is False:
    if instance.recommend is True:
    #send notification code

如果用户现在点击"推荐",则会发送通知。但问题是,如果第一次点击是"不推荐"也会发送。存储在数据库中的值在这种情况下为False。但通知仍然发送。

如果用户稍后将其建议从True切换为False或相反,则会按原样发送通知,仅在True时发送。但第一个错误是问题。

有谁知道为什么会这样?

修改

为了避免与previous_instance的复杂化,我也尝试了以下内容......

if created and instance.recommend is True:
    #send notification code

结果是一样的。如果第一个操作为False(并且False肯定保存在数据库中),则代码仍会执行。

1 个答案:

答案 0 :(得分:0)

如果为false,则询问布尔字段(t / f)为null。由于null计算结果为false,因此返回true。最好使用NullBooleanField

  

与BooleanField类似,但允许NULL作为其中一个选项。使用此而不是BooleanField,其中null = True。