72 votes

Dans Django Admin, comment désactiver le lien Supprimer

J'ai réussi à désactiver l'action "Supprimer la sélection". Facile.

Mais un utilisateur peut toujours cliquer sur un élément, puis il y a le lien rouge Supprimer en bas.

133voto

Jonathan Rhone Points 592

Facile :)

 class DeleteNotAllowedModelAdmin(admin.ModelAdmin):
    # Other stuff here
    def has_delete_permission(self, request, obj=None):
        return False
 

89voto

radtek Points 506

Si vous souhaitez désactiver un particulier qui n'est pas personnalisé le faire. Dans django 1.6.6 j'ai dû prolonger get_actions plus définir has_add_permission. Le has_add_permissions solution ne permet pas de se débarrasser de l'action à partir de la liste déroulante pour moi:

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_add_permission(self, request):
        #Disable delete
        return False

Ne pas l'inclure dans les actions = ['your_custom_action', ], ne fonctionne que pour les actions personnalisées (defs) que vous avez définis pour ce modèle. La solution AdminSite.disable_action('delete_selected'), le désactive pour tous les modèles, donc vous aurez à inclure explicitement plus tard par chaque modelAdmin

11voto

Aidas Bendoraitis Points 1680

Désactivez simplement l'autorisation yourapp.delete_yourmodel pour cet utilisateur ou le groupe auquel il appartient.

9voto

Yuval Adam Points 59423

Eh bien, vous utilisez probablement:

 AdminSite.disable_action('delete_selected')
 

Pour plus de contrôle, implémentez simplement votre propre administrateur et définissez ses actions selon vos besoins:

 class MyModelAdmin(admin.ModelAdmin):
    actions = ['whatever', 'actions']
 

Référence: http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-a-site-wide-action

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X