0

如果在创建或更新用户时没有给出用户名,我需要生成用户名。

我虽然关于使用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'")
4

1 回答 1

0

它不是。

默认username设置为空字符串,而不是None我这样做

if not instance.username:

在我的信号回调中

于 2013-08-03T09:46:24.100 回答