Django django.db.utils.IntegrityError: повторяющееся значение ключаPython

Программы на Python
Anonymous
Django django.db.utils.IntegrityError: повторяющееся значение ключа

Сообщение Anonymous »

У меня проблема с простой моделью пользователя. Я написал тест для функции нормализации электронной почты и в ответ получил ошибку « django.db.utils.IntegrityError: повторяющееся значение ключа нарушает уникальное ограничение «core_user_username_key»
ПОДРОБНОСТИ: Ключ (имя пользователя) = () уже существует. «Когда я добавил «user.delete()» после «self.assertEqual (user.email, ожидаемый)», все тесты пройдены. Что не так? Этот тест создает пользователей с одинаковым полем имени пользователя?

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()


Подробнее здесь: https://stackoverflow.com/questions/729 ... -key-value

Вернуться в «Python»