我正在创建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的专家,我不知道如何知道模型何时完成保存。
由于
答案 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)
希望它有所帮助!