从TabularInline中删除项目时不会调用delete_selected

时间:2012-01-06 19:34:58

标签: django django-admin

我的代码:

class FileAdmin(admin.TabularInline):
    model = models.File
    extra = 0
def delete_model(self, request, instance): # do extra work return super(FileAdmin, self).delete_model(request, instance)
class BannerAdmin(admin.ModelAdmin): inlines = (FileAdmin,)
admin.site.register(models.Banner, BannerAdmin)
当我将File项目标记为删除并保存Banner时,我的delete_model上的FileAdmin方法无法被调用。

我该如何解决?我是否需要编写自定义操作并将django.contrib.admin.actions.delete_selected替换为我的?如果是这样,我该如何重用标准动作?

编辑:

这是FileAdmin的新代码:

class FileAdmin(admin.TabularInline):
    model = models.File
    extra = 0
    actions = ('my_delete_selected',)
def my_delete_selected(self, request, queryset): # do extra work return actions.delete_selected(self, request, queryset)
但这没有帮助。 my_delete_selected也没有被调用...我正在使用grappelli模板进行管理,但我认为这不重要。

1 个答案:

答案 0 :(得分:0)

你试过save_related()吗?来自文档:

  

save_related方法被赋予HttpRequest,父ModelForm实例,内联formset列表以及基于父级是否被添加或更改的布尔值。在这里,您可以对与父项相关的对象执行任何预保存或后保存操作。请注意,此时父对象及其表单已保存。