2011-12-05 70 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