Во время тестирования менеджер недоступен [дубликат]

Я заменил модель User на свою собственную модель User. В ней используется стандартная UserManager. У меня также есть CustomUserChangeForm, который используется в моем UserAdmin. Я установил AUTH_USER_MODEL = "accounts.User" в настройках.

Это все работает нормально при обычном использовании сайта и админки через браузер. Тесты на моих представлениях, использующих пользовательскую модель User, также работают нормально.

Только когда я пытаюсь запустить тест непосредственно на CustomUserChangeForm, я получаю ошибку AttributeError: Manager isn't available; 'auth.User' has been swapped for 'accounts.User'.

Что здесь происходит?

Тест:

from .forms import CustomUserChangeForm
from .models import User

    def test_admin_user_change_form(self):
        self.register_user()
        self.register_user("email2@site.com", "username2")
        user = User.objects.get(username="username")
        # Test valid change
        form = CustomUserChangeForm({ "username": "username3", "email": "email3@site.com" }, user)
        self.assertTrue(form.is_valid())
        # Test case insensitive username change
        form = CustomUserChangeForm({ "username": "Username2" }, user)
        self.assertFalse(form.is_valid())
        # Test case insensitive email change
        form = CustomUserChangeForm({ "email": "Email2@site.com" }, user)
        self.assertFalse(form.is_valid())

Форма:

from .models import User

class CustomUserChangeForm(UserChangeForm):
    def clean_username(self):
        username = self.cleaned_data.get("username")
        if username and self._meta.model.objects.exclude(id=self.instance.id).filter(username__iexact=username).exists():
            self._update_errors(ValidationError({ "username": self.instance.unique_error_message(self._meta.model, ["username"]) }))
        else:
            return username
        
    def clean_email(self):
        return self.cleaned_data.get("email").lower()

Admin:

from django.contrib.auth.admin import UserAdmin
from .models import User

@admin.register(User)
class UserAdmin(UserAdmin):
# ...
    form = CustomUserChangeForm
# ...

Ответы на этот вопрос и этот вопрос, похоже, не подходят/не работают.

Не уверен, почему эта тема была закрыта. Связанный вопрос отличается тем, что все работает нормально при обычном использовании. Только при автоматизированном тестировании я получаю ошибку. Ни один из ответов, представленных в этом вопросе, не решает мою проблему.

Вернуться на верх