test django创建没有用户名的abstractuser的用户

wnrlj8wa  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(434)

我正在尝试在django中测试用户的创建。但是我的用户模型不是标准的(电子邮件是用户名)。

models.py

from django.contrib.auth.models import AbstractUser, UserManager as AbstractUserManager

class UserManager(AbstractUserManager):
    def create_user(self, email, password=None, is_active=True, is_staff=False, is_admin=False):
        if not email:
            raise ValueError('Users must have an email address')
        user = self.model(
            email=self.normalize_email(email),
        )
        user.set_password(password)
        user.save(using=self._db)
        return user

class CustomUser(AbstractUser):
    objects = UserManager()
    username = None
    first_name = models.CharField(max_length=150)
    last_name = models.CharField(max_length=150)
    email = models.EmailField(unique=True)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

tests.py

from django.contrib.auth import get_user_model

class CustomUserTests(TestCase):
    def test_create_user(self):
        user = get_user_model()
        utilisateur = user.create_user(
            email='test@tester.com',
            password='testpass123',
        )
        self.assertEqual(utilisateur.email, 'test@tester.com')

错误行10,在test\u create\u user usilizateur=user.create\u user(attributeerror:type对象“customuser”没有属性“create\u user”
缺少一些东西,但我不知道如何测试这个。。。
谢谢

wd2eg0qa

wd2eg0qa1#

customuser'没有属性“create\u user” create_user 不在屏幕上 CustomUser 模型,这就是错误所说的。该方法出现在 UserManager 管理器在用户模型上定义为 objects = UserManager() .
因此,要访问该方法,您需要使用 user.objects.create_user .

相关问题