class ReadOnlyAdmin(admin.ModelAdmin): def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False def get_readonly_fields(self, request, obj=None): if obj: return self.readonly_fields + tuple(obj.__class__._meta.get_all_field_names()) return self.readonly_fields