问题
In Django-Registration it says you can save a custom profile when you save a user.
But I have no idea what the documentation is asking me to do. Here is what they say:
To enable creation of a custom user profile along with the
User
(e.g., the model specified in theAUTH_PROFILE_MODULE
setting), define a function which knows how to create and save an instance of that model with appropriate default values, and pass it as the keyword argumentprofile_callback
. This function should accept one keyword argument:
user
The
User
to relate the profile to.
Can someone give me an example of the function that needs to be created and how to pass it as a argument?
回答1:
You can pass the callback function in your urls.py file.
from mysite.profile.models import UserProfile
url( r'^accounts/register/$', 'registration.views.register',
{ 'profile_callback': UserProfile.objects.create }, name = 'registration_register' ),
Substitute your own function for UserProfile.objects.create as needed.
回答2:
This is covered in this blogpost and expanded on in my answer to another question on the same issue
django-registration sends a signal at various events happening - registration and activation. At either of those points you can create a hook to that signal which will be given the user and request objects - from there you can create a profile for that user.
The signal from django-registration
#registration.signals.py
user_registered = Signal(providing_args=["user", "request"])
Code to create profile
#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()
回答3:
For anyone who met this problem, I think this blog post is a good tutorial: http://johnparsons.net/index.php/2013/06/28/creating-profiles-with-django-registration/.
来源:https://stackoverflow.com/questions/1072270/saving-profile-with-registration-in-django-registration