2009-07-02 35 views
14

En Django-Registration dice que puede guardar un perfil personalizado cuando guarda un usuario.
Pero no tengo idea de lo que la documentación me pide que haga. Esto es lo que dicen:Guardar perfil con registro en Django-Registration

para permitir la creación de un perfil de usuario personalizado junto con el User (por ejemplo, el modelo especificado en la configuración AUTH_PROFILE_MODULE), definir una función que sabe cómo crear y guardar una instancia de esa modele con los valores predeterminados apropiados, y páselo como el argumento de la palabra clave profile_callback. Esta función debe aceptar el argumento de una palabra clave:

user

El User para relacionar el perfil a.

¿Puede alguien darme un ejemplo de la función que necesita crearse y cómo pasarla como argumento?

Respuesta

8

Puede pasar la función de devolución de llamada en su archivo urls.py.

from mysite.profile.models import UserProfile 


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

Sustituya su propia función para UserProfile.objects.create según sea necesario.

+0

Bueno, tengo que hacer lo mismo ... pero puedo entender qué tan mal muestra el formulario de perfil en el lugar de la muestra del formulario de registro y guardar los datos ... no sé que estoy perdido ... gracias – Asinox

+1

Esto ya no es el caso en django-registration 0.8+ – Gezim

6

Esto se trata en this blogpost y se expandió en mi respuesta a another question on the same issue

django-registro envía una señal a varios eventos que suceden - registro y la activación. En cualquiera de esos puntos, puede crear un enlace a esa señal que se le dará al usuario y solicitar objetos, desde allí puede crear un perfil para ese usuario.

La señal de django-registro

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

código para crear el perfil

#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() 
Cuestiones relacionadas