Django用户模型抛出重复键值违反唯一约束;用户“用户”用户名“密钥”;关于用户创建
我正在测试我的用户模型,看看它的信号是否正常工作,但是,我得到了一个错误:Django用户模型抛出重复键值违反唯一约束;用户“用户”用户名“密钥”;关于用户创建,django,django-models,django-signals,Django,Django Models,Django Signals,我正在测试我的用户模型,看看它的信号是否正常工作,但是,我得到了一个错误: psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "user_user_username_key" DETAIL: Key (username)=() already exists. 目前我的测试是: class UserTestCase(TestCase): obj1
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "user_user_username_key"
DETAIL: Key (username)=() already exists.
目前我的测试是:
class UserTestCase(TestCase):
obj1 = None
obj2 = None
def setUp(self):
self.obj1 = User.objects.create(first_name="james", last_name="adams", email="jamesadams@gmail.com")
self.obj2 = User.objects.create(first_name="amy", last_name="", email="12amy_123jackson@hotmail.com")
我的信号文件是:
@receiver(pre_save, sender=User, dispatch_uid="set_username_of_user")
def set_username(sender, instance, **kwargs):
"""
Every time a user is saved, ensures that user has a certain username
This method avoids users having username field set to null
"""
if not instance.username:
email = instance.email
email_without_domain = email[:email.find("@")].replace("-","_").lower().strip()[:20].replace(' ','')
username = create_username(email_without_domain)
print(username)
if User.objects.filter(username=username).exists():
while User.objects.filter(username=username):
username = create_username(email_without_domain)
instance.username = username
instance.save()
我可以确认正在调用该信号,但是它仍然抛出该错误。导致此问题的原因是什么?错误可能传递了一个空字符串。什么是
create\u username
?它真的返回了什么吗?