如果在创建或更新用户时没有给出用户名,我需要生成用户名。
我虽然使用pre_save
信号
@receiver(pre_save, sender=User, dispatch_uid='autocreate_username')
def create_username(sender, instance, **kwargs):
if instance.username == None:
instance.username = generate_random_username()
但是用户似乎是在信号呼叫之前插入的。
>>> user = User(email='machin@chouette.com')
>>> user.save()
Traceback (most recent call last):
...
IntegrityError: (1062, "Duplicate entry '' for key 'username'")
答案 0 :(得分:0)
不是。
默认username
设置为空字符串,而不是None
,所以我做了
if not instance.username:
在我的信号回调中