In Django Admin how do I disable the Delete link

前端 未结 7 2241
天命终不由人
天命终不由人 2020-12-07 22:29

I\'ve managed to disable the \"Delete selected\" action. Easy.

But a user can still click on an item and then there\'s the red Delete link at the bottom.

7条回答
  •  眼角桃花
    2020-12-07 22:55

    If you want to disable an specific one that isn't custom do this. In django 1.6.6 I had to extend get_actions plus define has_delete_permission. The has_delete_permission solution does not get rid of the action from the dropdown for me:

    class MyModelAdmin(admin.ModelAdmin):
    
        ....
    
        def get_actions(self, request):
            #Disable delete
            actions = super(MyModelAdmin, self).get_actions(request)
            del actions['delete_selected']
            return actions
    
        def has_delete_permission(self, request, obj=None):
            #Disable delete
            return False
    

    Not including it in actions = ['your_custom_action'], only works for the custom actions (defs) you have defined for that model. The solution AdminSite.disable_action('delete_selected'), disables it for all models, so you would have to explicitly include them later per each modelAdmin

提交回复
热议问题