如果在创建或更新用户时没有给出用户名,我需要生成用户名。
我虽然关于使用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'")