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
?它真的返回了什么吗?