2

モデル内の関連フィールドの検証を行うのに適切な時期はいつですか?

たとえばManyToMany、クラスのプレイリストと関係があるクラスのビデオがある場合、ビデオが「プライベート」に変更されると、すべてのプレイリストから削除する必要があります。

モデルのclean()メソッドでこれを行うのは危険に思えます - モデルは検証に失敗して保存されない可能性がありますが、プレイリストの参照は削除されます。

post_saveまたは信号でそれを行うpre_saveのは正しい方法ですか?

4

1 に答える 1

0

次の 2 つの選択肢があります。

最初のものはpost_save、仕事をする信号を使用しています。ではありませんpre_save。保存が失敗する可能性があり、保存が正しく機能した場合にのみそれを実行したいと思うからです。

save()他のオプションは、次のようなモデルのメソッドをオーバーライドすることです:

def save(self, *args, **kwargs):
    super(MyModel, self).save(*args, **kwargs)
    # do stuff for removing whatever you want to remove

あなたはさまざまなモデルを扱っているので、私の個人的な選択は最初のものです。現在の 1 つだけを処理する必要がある場合は、2 つ目の処理を行います。しかし、それは単なる個人的な考えです。

于 2012-08-10T13:29:47.103 に答える