0

I want to create my own username for users in django

from django.contrib.auth import get_user_model
from datetime import date
from django.dispatch import receiver
from django.db.models.signals import pre_save
from django.db import models
User = get_user_model()
# auto username


@receiver(pre_save, sender=User)
def set_username(sender, instance, created, **kwargs):
    if created:
        instance.username = 'User-' + str(date.year) + '-' + str(instance.id)
        instance.save()

so I created this signals.py file and I added this signals file to the app.py file in the app context but still it is not making any progress can someone help me to generate an username while filling the form.

1 Answers1

0

this worked for me,

from django.contrib.auth import get_user_model
from datetime import date
from django.dispatch import receiver
from django.db.models.signals import pre_save
from django.db import models
import time
User = get_user_model()

# auto username signal


@receiver(pre_save, sender=User)
def set_username(sender, instance, created, **kwargs):
    if created:
        currentYear = time. strftime("%Y")
        instance.username = f'User-{currentYear}-{str(instance.id)}'
        instance.save()


models.signals.pre_save.connect(set_username, sender=User)

but still, I get this after saving the object i can't load value to the input form. Enough for me.