Django admin-отключить удаление пользователя
у меня есть приложение django, в котором я хочу отключить удаление пользователя в admin. Я попытался отключить действия и установить разрешение delete на false. Но ни одна из них не сработала.
from django.contrib.auth.models import User
class UserProfileAdmin(UserAdmin):
actions = None
или
def has_delete_permission(self, request):
return False
или
def get_actions(self, request):
actions = super(UserProfileAdmin, self).get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)
но когда я использую UserAdmin для добавления встроенной информации о пользователе, он работает нормально. Поэтому, пожалуйста, предложите мне способ отключить удаление пользователя в Django admin. Спасибо заранее.
2 ответов
переопределение ModelAdmin.has_delete_permission
должен сделать трюк, ваша вызывающая подпись неверна, в ней отсутствует obj
параметр
class UserProfileAdmin(UserAdmin):
def has_delete_permission(self, request, obj=None): # note the obj=None
return False
кроме того, просто return False
запрещает всем сотрудникам, включая администратора, удалять элементы в Администраторе Django, вы можете просто настроить User/Group
разрешения для предотвращения этих сотрудников вы не хотите, чтобы они удалить User()
, сняв их delete_userprofile
и delete_user
разрешения.
Если ваша цель состоит в том, чтобы навсегда удалить кнопку "Удалить" из нижней части всех форм изменения администратора, вы можете сделать это, изменив файл .../django/contrib/admin/templatetags/admin_modify.py
.
в частности, заменить строки:
'show_delete_link': (not is_popup and context['has_delete_permission']
and (change or context['show_delete'])),
С:
'show_delete_link': False,
и никакие формы изменения администратора не должны показывать кнопку удаления в левом нижнем углу.