Я использую django 2.1.5.Я хочу переопределить процесс аутентификации администратора django, цель состоит в том, чтобы позволить пользователю с is_staff = False иметь возможность войти в систему .Итак, я пытаюсь переопределить AdminSite и следовал этой документации (https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#overriding-default-admin-site). Это код на данный момент:
my_app / forms.py
from django.contrib.admin.forms import AdminAuthenticationForm
class CustomAdminAuthenticationForm(AdminAuthenticationForm):
def confirm_login_allowed(self, user):
super().confirm_login_allowed(user) # i removed is_staff checking here
my_app / admin.py
class MyAdminSite(admin.AdminSite):
login_form = CustomAdminAuthenticationForm
def has_permission(self, request):
return request.user.is_active # i also removed request.user.is_staff here
my_app / apps.py
from django.contrib.admin.apps import AdminConfig
class MyAdminConfig(AdminConfig):
default_site = 'my_app.admin.MyAdminSite'
root / settings.py
INSTALLED_APPS = [
'my_app.apps.MyAdminConfig',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'my_app',
]
Когда я пытался запустить сервер, возникает ошибка:
ImportError: Module "my_app.admin" does not define a "MyAdminSite" attribute/class
Я думаю, что у меня есть точка default_site в my_app / apps.py правильно. Как я могу это исправить?Есть ли другой способ выполнить мою задачу, кроме переопределения AdminSite? Спасибо.