Тестовый клиент Django перенаправляет на страницу входа в систему с вошедшим суперпользователем

Я пытаюсь подключить суперпользователя к тестовому клиенту Django, а затем получить доступ к странице в интерфейсе администрирования Django с помощью метода GET. Однако я получаю перенаправление на страницу входа в систему, даже если суперпользователь правильно вошел в систему.

Вот мой код:

def test(self) -> None:
    client = Client()
    user = User.objects.create(username='user', is_superuser=True)
    client.force_login(user)
    response = client.get(f'/admin/management/establishment/', follow=True)

    print("Redirect chain\t", response.redirect_chain)
    print("Request user\t", response.wsgi_request.user)
    print("Is superuser\t", response.wsgi_request.user.is_superuser)

Вот вывод:

Redirect chain   [('/admin/login/?next=/admin/management/establishment/', 302)]
Request user     user
Is superuser     True

Знаете ли вы, почему у меня такое перенаправление и как я могу его избежать?

Источник проблемы

Похоже, что установка пользователя в качестве суперпользователя с помощью is_superuser=True не позволяет ему получить доступ к интерфейсу администратора Django.

Только сотрудники могут войти в систему, поэтому атрибут is_staff=True должен быть добавлен к созданию пользователя.

Удивительно, что суперпользователи не считаются сотрудниками по умолчанию.

Решение

Создание пользователя со следующей строкой не перенаправляет на страницу входа в систему:

user = User.objects.create(username='user', is_superuser=True, is_staff=True)
Вернуться на верх