Reputation: 1617
I want to implement django signals on User model for create user profile. I want to create user profile when any user will be registered. here is my code for create user profile though signals:
from django.contrib.auth.models import User
@receiver(post_save, sender=User)
def user_is_created_or_save(sender,instance,created,**kwargs):
user = instance.user
first_name = instance.first_name
last_name = instance.last_name
if created:
UserProfile.objects.create(user=user)
I am not understanding why user profile not creating when any user registered?
#updated question
I am using Abstract user model. here is my user mdoel:
class UserManagement(AbstractUser):
is_blog_author = models.BooleanField(default=False)
is_editor = models.BooleanField(default=False)
is_subscriber = models.BooleanField(default=False)
is_customer = models.BooleanField(default=False)
class Subscriber(models.Model):
user = models.OneToOneField(UserManagement, on_delete=models.CASCADE, primary_key=True)
email = models.EmailField(max_length=1000)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
is_subscriber = models.BooleanField(default=False)
class UserProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name="userprofile")
Upvotes: 0
Views: 282
Reputation: 12068
Since a custom user model has been defined, you can't use from django.contrib.auth.models import User
. It is also not a recommended way to reference the user model.
As described in the docs
if you have properly setup your custom user model, you can use settings.AUTH_USER_MODEL
to reference your custom user model as the sender:
from django.conf import settings
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def user_is_created_or_save(sender, instance, created, **kwargs):
...
Upvotes: 1