I need to generate a username if none is given when creating or updating a user.
I though about using a pre_save
signal
@receiver(pre_save, sender=User, dispatch_uid='autocreate_username')
def create_username(sender, instance, **kwargs):
if instance.username == None:
instance.username = generate_random_username()
But the user seems to be inserted before the signal call.
>>> user = User(email='machin@chouette.com')
>>> user.save()
Traceback (most recent call last):
...
IntegrityError: (1062, "Duplicate entry '' for key 'username'")