特定のモデルが作成されたときにwebsocketを通じてメッセージを送信するdjango appを作成しています。モデルがdjango-rest-frameworkで保存を完了したときのシグナル
私のモデルは次のようになります。
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
を使用した場合、m2m_fieldはpost_save
レシーバー内で空です。
その他のオプションはありますか?
私はカスタム信号を書こうとしましたが、私はジャンゴの専門家ではないので、モデルがいつ保存されるのかを知る方法はありません。
ありがとうございました
['on_commit'](https://docs.djangoproject.com/en/1.10/topics/db/transactions/#performing-actions-after-commit)が役立つかもしれません。 –
しかし、それはデータベースのすべての書き込みで呼び出され、コールバック関数には、少なくともどのオブジェクトが保存されているかを示す引数はありません。 –
保存後、インスタンス変数にアクセスしようとしましたか? M2M変数を含む必要があります。 –