Почему сигналы не работают = создание профиля при регистрации пользователя

Почему не работают сигналы = создание профиля при регистрации пользователя

я хочу знать, что есть

enter image description here

----- настройки

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)

Почему код не работает

Почему код не работает

Вы определили create_profile внутри класса profile, поэтому он недоступен для 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)

К вашему сведению, signal - не самый подходящий способ выполнения этой операции посмотрите статью django-antipattern о signals. На вашем месте я бы использовал пользовательскую модель User и переопределил ее метод сохранения.

Вернуться на верх