En compilant les excellentes réponses de @darklow et @josir, tout en ajoutant un peu plus pour supprimer les boutons "Enregistrer" et "Enregistrer et continuer", on obtient (en syntaxe Python 3) :
class ReadOnlyAdmin(admin.ModelAdmin):
"""Fournit une vue en lecture seule d'un modèle dans l'administration Django."""
readonly_fields = []
def change_view(self, request, object_id, extra_context=None):
"""Personnaliser le formulaire d'ajout / modification pour supprimer les boutons enregistrer et enregistrer et continuer"""
extra_context = extra_context or {}
extra_context['show_save_and_continue'] = False
extra_context['show_save'] = False
return super().change_view(request, object_id, extra_context=extra_context)
def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
def get_readonly_fields(self, request, obj=None):
return list(self.readonly_fields) + \
[field.name for field in obj._meta.fields] + \
[field.name for field in obj._meta.many_to_many]
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
ensuite, vous l'utilisez comme ceci
class MyModelAdmin(ReadOnlyAdmin):
pass
Je n'ai essayé ceci qu'avec Django 1.11 / Python 3.