Django django.db.utils.IntegrityError: duplicate key value



我有一个简单的用户模型的问题。我写了一个测试邮件规范化功能,作为回应,我有一个"django.db.utils.IntegrityError:重复的键值违反了唯一约束"core_user_username_key"DETAIL: Key (username)=()已经存在。";当我在self. asserequals (user. equals)之后添加了user.delete()电子邮件、预期)";测试全部通过。怎么了?该测试是否创建具有相同用户名字段的用户?
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注册多个用户。

最新更新