如何解决Django 用户模型抛出重复的键值违反了用户创建时的唯一约束“user_user_username_key”
我正在测试我的用户模型以查看它的信号是否正常工作,但是我收到一个错误:
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()
我可以确认正在调用信号,但是它仍然会抛出该错误。什么可能导致此问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。