我的代码:
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模板进行管理,但我认为这不重要。
答案 0 :(得分:0)
你试过save_related()吗?来自文档:
save_related方法被赋予HttpRequest,父ModelForm实例,内联formset列表以及基于父级是否被添加或更改的布尔值。在这里,您可以对与父项相关的对象执行任何预保存或后保存操作。请注意,此时父对象及其表单已保存。