2011-12-05 11 views
0

ユーザーが私のdjangoサイトのモデルページで「保存」ボタンをクリックすると、すべてのモデルを一度に更新したいと思っています。 save_modelをオーバーライドすると、オブジェクトごとに1回呼び出されますが、すべてのオブジェクトを更新して1つの関数を呼び出すようにします。私はsave_formsetをオーバーライドが、それはうまくいきませんでした:django:インライン管理の保存のためのハンドラ

class ShadingAdmin(admin.ModelAdmin): 
    list_display = ('foo', 'bar', 'baz') 
    list_editable = ('bar', 'baz') 
    list_display_links = ('foo',) 
    def save_formset(self, request, form, formset, change): 
     print "FOO" 

admin.site.register(Shading, ShadingAdmin) 

"FOO"が印刷されることはありません。

私はDjango 1.2を使用しています。

+0

...しかし、一日の終わりに同じではありませんか? afaikのモデルごとに別々の挿入/更新呼び出しを行います。 –

+0

@equinoxel:私がトリガーしたいカスタムSQLをコード化していないのであれば、私は一度にすべてのインスタンスを必要とします。 – Claudiu

+0

formsetの.save()をオーバーライドできますか? –

答えて

1

formset.save()returns a list of all objectsからformset。 commit = Falseで呼び出すことができ、変更は検証され、DBには保存されません。

save_formset()はadminによってのみ呼び出されます(あなたはdjangoのソースでgrepを実行できます)。

+0

管理ページで 'save'をクリックすると' ModelAdmin'の 'save_formset()'が呼び出されないのはなぜですか? (特定のオブジェクトの 'save'ではなく、インラインオブジェクトの' save'にあります) – Claudiu

+0

私はちょっと混乱しています。あなたは管理インターフェースを使用していますか? –

+0

はい。私の管理コード全体( 'admin.py'内)が問題になります。その 'save_formset'関数は決して呼び出されません。 'list_editable'タプルのフィールドを編集するオブジェクトをインラインで編集しています。 – Claudiu

関連する問題