The default “delete selected” admin action in Django

后端 未结 8 1627
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-14 09:24

How can I remove or change the verbose name of the default admin action \"delete selected X item\" in the Django admin panel?

8条回答
  •  不思量自难忘°
    2020-12-14 10:06

    class FooAdmin(sites.AdminSite):
            not_deleted = ['value1', 'value2']
            actions = ['delete_selected_values']
    
        def delete_selected_values(self, request, queryset):
            # my custom logic
            exist = queryset.filter(value__in=self.not_deleted).exists()
            if exist:
                error_message = "Error"
                self.message_user(request, error_message, level=messages.ERROR)
            else:
                delete_action = super().get_action('delete_selected')[0]
                return delete_action(self, request, queryset)
        delete_selected_values.short_description = 'delete selected'
    
    admin.site.register(Foo, FooAdmin)
    

提交回复
热议问题