web-dev-qa-db-fra.com

Supprimez l'action de suppression par défaut dans Django admin

Comment supprimer l'action de suppression par défaut dans Django admin? Est-ce que cela fonctionnerait?

actions = [ ] 
25
Dawn T Cherian

Cela marche:

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

C'est également la façon recommandée de le faire basée sur la documentation de Django ci-dessous:

Activation ou désactivation conditionnelle des actions

43
Dawn T Cherian

Dans votre classe d'administration, définissez has_delete_permission pour renvoyer False:

class YourModelAdmin(admin.ModelAdmin):
    ...

    def has_delete_permission(self, request, obj=None):
        return False

Ensuite, il n'affichera pas le bouton Supprimer et ne vous permettra pas de supprimer des objets dans l'interface d'administration.

13
falsetru

Vous pouvez désactiver l'action "supprimer la sélection" à l'échelle du site:

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

Lorsque vous devez inclure cette action, ajoutez 'delete_selected' à la liste d'actions:

actions = ['delete_selected']

Documentation

8
Max Malysh

Si vous souhaitez supprimer toute l'action:

class UserAdmin(admin.ModelAdmin):
    model = User
    actions = None

Si vous souhaitez une action spécifique:

class UserAdmin(admin.ModelAdmin):
    model = User
    actions = ['name_of_action_you_want_to_keep']
6
Rajan Mandanka