ユーザーの作成または更新時にユーザー名が指定されていない場合は、ユーザー名を生成する必要があります。
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'")