The default "delete selected" admin action in Django

Alternatively to Googol's solution, and by waiting for delete_model() to be implemented in current Django version , I suggest the following code.

It disables the default delete action for current AdminForm only.

class FlowAdmin(admin.ModelAdmin):
    actions = ['delete_model']

    def get_actions(self, request):
        actions = super(MyModelAdmin, self).get_actions(request)
        del actions['delete_selected']
        return actions

    def delete_model(self, request, obj):
        for o in obj.all():
            o.delete()
    delete_model.short_description = 'Delete flow'

admin.site.register(Flow, FlowAdmin)

You can disable the action from appearing with this code.

from django.contrib import admin
admin.site.disable_action('delete_selected')

If you chose, you could then restore it on individual models with this:

class FooAdmin(admin.ModelAdmin):
    actions = ['my_action', 'my_other_action', admin.actions.delete_selected]