0

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'")
falsetru
  • 357,413
  • 63
  • 732
  • 636
Pierre de LESPINAY
  • 44,700
  • 57
  • 210
  • 307

1 Answers1

0

It is not.

Default username was set to empty string and not None so I did

if not instance.username:

in my signal callback

Pierre de LESPINAY
  • 44,700
  • 57
  • 210
  • 307