@Ribachok

Как сделать так, чтоб с регистрацией нового пользователя создавался профиль(модель Profile)?

Приветствую. Я создал модель Profile и хочу, чтоб с регистрацией нового пользователя создавался его профиль.
Пытался сам это сделать, искал в Интернете решение, но ничего не нашел.
Модель:

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
monetki = models.IntegerField('монетки', default=0)
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@Realmixer
Full stack Python (Django) web-developer
Используй сигналы, Люк!
from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=User, created)
def save_profile(sender, instance, **kwargs):
    # instance — это сохранённый экземпляр модели User
    # created — это флаг, указывающий был ли пользователь создан, или сохранён уже существующий
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lastway90
yourapp/models.py где хранится модель профиля

from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=User)
def save_or_create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
else:
try:
instance.profile.save()
except ObjectDoesNotExist:
Profile.objects.create(user=instance)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы