Django django.db.utils.IntegrityError: дублирование значения ключа

У меня проблема с простой моделью пользователя. Я написал тест для функции нормализации электронной почты и в ответ получил ошибку "django.db.utils.IntegrityError: duplicate key value violates unique constraint "core_user_username_key"". ДЕТАЛЬ: Ключ (имя пользователя)=() уже существует. " Когда я добавил "user.delete()" после "self.assertEqual(user.email, expected)" все тесты прошли.Что не так? Этот тест создает пользователей с одинаковым полем имени пользователя?
Models.py

class UserManager(BaseUserManager):
"""Manager for user"""

    def create_user(self, email, password=None, **extra_fields):
        user = self.model(email=self.normalize_email(email), **extra_fields)
        user.set_password(password)
        user.save(using=self._db)

        return user


class User(AbstractUser, PermissionsMixin):
    """User model"""
    email = models.EmailField(max_length=255, unique=True)
    name = models.CharField(max_length=255)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)

    objects = UserManager()
    REQUIRED_FIELDS = []

    USERNAME_FIELD = 'email'

test.py

class ModelTest(TestCase):

def test_create_user_with_email(self):
    """Testing creating user with email address"""
    email = 'testaddress@example.com'
    password = 'testpassword1234'
    user = get_user_model().objects.create_user(
        email=email,
        password=password,
    )
    self.assertEqual(user.email, email)
    self.assertTrue(user.check_password(password))

def test_user_email_normalized(self):
    """Testing email normalize function"""
    test_emails = [
        ['test1@EXAMPLE.Com', 'test1@example.com'],
        ['TesT2@exaMple.com', 'TesT2@example.com'],
    ]
    for email, expected in test_emails:
        user = get_user_model().objects.create_user(email, 'password123')
        self.assertEqual(user.email, expected)
        user.delete()

Создается пользователь с тем же username. Вы унаследовали это от родительской модели и не удалили поле username. Вы должны указать его как None, так:

class User(AbstractUser, PermissionsMixin):
    """User model"""
    username = None
    # …

В тестах вы, таким образом, не должны удалять user: система должна быть способна регистрировать несколько пользователей с каждым отдельным email.

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