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.
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.
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
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 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.