I'm trying to follow the docs and set up a UserProfile table in my model, associate it with the User table in the admin area, and then store additional information about my users in this UserProfile table when they register.
In views.py
I have the following:
from django.contrib.auth import authenticate, login, logout
def register(request):
if request.method == 'POST':
query_dict = request.POST
username = query_dict.__getitem__("username")
email = query_dict.__getitem__("user_email")
password = query_dict.__getitem__("password")
repeat_password = query_dict.__getitem__("repeat_password")
role = query_dict.__getitem__("role")
user = User.objects.create_user(username, email, password)
# django.db.models.signals.post_save gets called here and creates the UserProfile
# I can write something like user_profile = user.get_profile() but I don't
# know how to save information to the profile.
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
login(request, user)
return HttpResponseRedirect("/")
As you can see in the comments in my code above, I can retrieve the associated UserProfile object, but I don't know where to go from there to store the additional data (the role) in the UserProfile table. All the documentation tells me is:
get_profile() Returns a site-specific profile for this user. Raises django.contrib.auth.models.SiteProfileNotAvailable if the current site doesn't allow profiles, or django.core.exceptions.ObjectDoesNotExist if the user does not have a profile.
You can view it here: https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.models.User.get_profile
But the docs don't tell me what kind of object get_profile()
returns, or how I can use it to store information in the UserProfile table.