このpost_save/pre_save信号をdjangoから把握するのに苦労しています。
私のモデルにはフィールドがstatus
あり、このモデルへのエントリが追加/保存されると、それに応じて何らかの条件でステータスを変更する必要があります。
私のモデルは次のようになります。
class Ticket(models.Model):
(...)
status = models.CharField(max_length=1,choices=OFFERT_STATUS, default='O')
そして、pre_save 用に構成された私のシグナルハンドラー:
def ticket_handler(sender, **kwargs):
ticket = kwargs['instance']
(...)
if someOtherCondition:
ticket.status = 'C'
ticket.save()
さて、この最後の行の文のすぐ下に置くとどうなるでしょうかif
。これは、このアクションがシグナル自体を呼び出すため、巨大な反復ブラック ホールです。そして、この問題は と の両方pre_save
で発生しpost_save
ます。
ええと...保存する前に(または保存した後に)エントリを変更する機能は、djangoの世界ではかなり一般的だと思います。それで、私はここで何が間違っていますか?シグナルは間違ったアプローチですか、それともここで何かが欠けていますか?
また、この pre_save/post_save 関数がトリガーされると、別のモデルのインスタンスにアクセスして、その特定の行エントリを変更することは可能でしょうか?
ありがとう