2011-12-05 73 views
0

當用戶點擊我的django網站的模型頁面上的「保存」按鈕時,我想要對所有要更新的模型進行一次全部操作。如果我覆蓋save_model,它會針對每個對象調用一次,但我希望調用一個函數以使所有對象都被更新。我推翻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

你可以重寫.save()在formset? –

回答

1

formset.save()returns a list of all objects from formset。您可以使用commit = False來調用它,並且更改僅被驗證,未保存在數據庫中。

save_formset()僅由admin調用(您可以在django的源代碼中執行grep)。

+0

當我點擊admin頁面上的'save'時,爲什麼不調用'ModelAdmin'的save_formset()呢? (不是'保存'爲特定的對象,而是'保存'爲內聯對象) – Claudiu

+0

我有點困惑..你在使用管理界面嗎? –

+0

是的。我的管理代碼的全部(在'admin.py')是在問題中。這個'save_formset'函數永遠不會被調用。請注意,我正在編輯內聯對象 - 編輯'list_editable'元組中的字段。 – Claudiu