1

saveメソッドにいくつかのカスタマイズを加えたモデルがあります。

def SomeModel(models.Model):
    def save(self, *args, **kwargs):
        if not kwargs.pop('skip_expensive_processing', False):
            do_expensice_processing()
        return super(SomeModel, self).save(*args, **kwargs)

基本的に、saveメソッドが呼び出されるたびに、高価なプロセスを実行する必要があります

しかし、まとめて保存を行う場合(一括インポート)、保存ごとに高価な処理を実行したくありません。すべてのオブジェクトが保存された後、高価なプロセスを一度実行したいと思います。

一括保存の場合、オブジェクトは。を介して作成されますModelFormSomeModelフォームがでsaveメソッドを呼び出すときに、そのskip_expensive_processingキーワードargで一時停止するように、フォームを変更する方法を見つける必要があります。どうすればよいですか?

メソッドのソースをModelForm.save()調べましたが、モデル保存メソッドをあまりにも単純な方法で調整していないようです...

4

1 に答える 1

0

saveおそらく、modelformのメソッドをオーバーライドする必要はありません。を渡すことができればcommit=True、モデルの保存はまったく呼び出されません。

于 2012-09-19T08:06:26.103 に答える