Why the signals don't work = create profile when user register

why the signals don't work = create profile when user register

i wannt to know the is

enter image description here

----- settings

INSTALLED_APPS = [
    'main',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

-----model

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

# Create your models here.
class profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    music = models.CharField(max_length=50)
    skils = models.CharField(max_length=50)
    search = models.CharField(max_length=50)
    posts = models.CharField(max_length=50)
    boi = models.TextField()
    img = models.ImageField(upload_to="profile-img")

    def __str__(self):
        return self.user

    def create_profile(sender, **kwargs):
        if kwargs['created']:
            user_profile = profile.objects.create(user=kwargs['instance'])

post_save.connect(create_profile, sender=User)

why code dont work

why code dont work

You defined create_profile inside profile class, so it's not accessible to post_save.

class profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    music = models.CharField(max_length=50)
    skils = models.CharField(max_length=50)
    search = models.CharField(max_length=50)
    posts = models.CharField(max_length=50)
    boi = models.TextField()
    img = models.ImageField(upload_to="profile-img")

    def __str__(self):
        return self.user

def create_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = profile.objects.create(user=kwargs['instance'])

post_save.connect(create_profile, sender=User)

FYI, signal isn't the most suitable way to do this operation have a look to django-antipattern article about signals. If I were you I would use a custom User model and override its save method.

Back to Top