django: 内联管理保存的处理器

0 投票
1 回答
1536 浏览
提问于 2025-04-17 07:46

当用户在我Django网站的模型页面上点击“保存”按钮时,我想一次性处理所有需要更新的模型。如果我重写了 save_model 方法,它会对每个对象单独调用一次,但我希望有一个函数可以一次性处理所有要更新的对象。我尝试重写 save_formset,但是没有成功:

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。

1 个回答

1

formset.save() 会返回一个列表,里面包含了所有来自这个表单集的对象。你可以用 commit=False 来调用它,这样的话,修改的内容只会被验证,但不会保存到数据库里。

save_formset() 这个函数只会被管理员调用(你可以在 Django 的源代码里查找一下)。

撰写回答