Django - расширение модели User с профилем при создании пользователя для типов учетных записей - PullRequest
0 голосов
/ 07 марта 2019

Из исследования я обнаружил, что лучший способ создания типов учетных записей для пользователей - это модель «один к одному», которую я назвал profile.Что неясно, и я не нахожу четкого ответа, как я могу создать это одновременно с созданием пользователя.Я использую модель пользователя по умолчанию в django.

Я пробовал следующее, но это не работает, и пытается использовать get метод внутри post.

user = User.objects.create_user(first_name=first_name, last_name=last_name, password=password, username=email, email=email) 
user.save()
user = User.objects.get(pk=user_id)
user.profile.account_type = 'User'
user.save()

Если это актуально, я использую радио-выбор в html-форме для типов счетов

1 Ответ

1 голос
/ 07 марта 2019

Вы можете сделать это просто:

from yourapp.models import Profile

user = User.objects.create_user(first_name=first_name, last_name=last_name, password=password, username=email, email=email)

profile = Profile.objects.create(user=user, account_type='User')

Или вы можете использовать сигнал post save для сохранения профиля.Например:

from django.conf import settings
from django.db.models.signals import post_save

def post_save_receiver(sender, instance, created, **kwargs):
    if created:
      profile = Profile.objects.create(user=instance, account_type='User')
post_save.connect(post_save_receiver, sender=settings.AUTH_USER_MODEL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...