Сохранение профиля с регистрацией в Django-Registration

В Django-Registration говорится, что вы можете сохранить пользовательский профиль при сохранении пользователя.
Но я понятия не имею, что мне просит документация. Вот что они говорят:

Чтобы включить создание пользовательского профиля вместе с User (например, модель, указанная в параметре AUTH_PROFILE_MODULE), определите функцию, которая умеет создавать и сохранять экземпляр этой модели с соответствующими значениями по умолчанию, и передать его как аргумент ключевого слова profile_callback. Эта функция должна принимать один аргумент ключевого слова:

User

User, чтобы связать профиль с.

Может ли кто-нибудь дать мне пример функции, которая должна быть создана, и как передать ее в качестве аргумента?

Ответы

Ответ 1

Вы можете передать функцию обратного вызова в файл urls.py.

from mysite.profile.models import UserProfile


url( r'^accounts/register/$',      'registration.views.register',
        { 'profile_callback': UserProfile.objects.create }, name = 'registration_register' ),

Замените свою собственную функцию для UserProfile.objects.create при необходимости.

Ответ 2

Это описано в этом blogpost и расширен в ответе на еще один вопрос о та же проблема

django-registration отправляет сигнал при различных событиях - регистрации и активации. В любой из этих точек вы можете создать привязку к этому сигналу, которому будут предоставлены пользователи и объекты запроса - оттуда вы можете создать профиль для этого пользователя.

Сигнал от регистрации django

#registration.signals.py 
user_registered = Signal(providing_args=["user", "request"]) 

Код для создания профиля

#signals.py (in your project)
user_registered.connect(create_profile)

def create_profile(sender, instance, request, **kwargs):
    from myapp.models import Profile
    #If you want to set any values (perhaps passed via request) 
    #you can do that here

    Profile(user = instance).save()