模型在django-rest-framework中完成保存时的信号

时间:2017-03-28 08:11:15

标签: python django django-models django-rest-framework django-channels

我正在创建django app,当创建某个模型时,它将通过websocket发送消息。

我的模型看起来像这样:

class Notification(model.Model):
    owner = models.ForeignKey(User)
    datetime = models.DateTimeField(auto_now_add=True)
    resources = models.ManyToManyField(Resource, related_name='notifications', blank=True)
    recipients = models.ManyToManyField(User, related_name='notifications', blank=True)

我希望在模型完成保存时发送信号。如果我使用m2m_changed信号,那么如果m2m字段留空,则不会调用信号。即使字段不为空,我也需要将m2m_changed绑定到两个关系,这会导致通过websocket发送多条消息。如果我使用post_save,则post_save接收器内的m2m_field为空。

还有其他选择吗?

我尝试编写自定义信号,但我不是django的专家,我不知道如何知道模型何时完成保存。

由于

1 个答案:

答案 0 :(得分:0)

编写模型信号并不是那么先进/困难。只需点击此处的docs即可。覆盖模型的保存功能以发送自定义信号。

# in Notification class
def save(self, *args, **kwargs):
    super(Notification, self).save(*args, **kwargs)
    # model and m2m fields are updated now
    my_signal.send(*some_args, **some_kwargs)

希望它有所帮助!