If think my question is pretty obvious and almost every developer working with UserProfile
should be able to answer it.
However, I could not find any help on the django documentation or in the Django Book.
When you want to do a UserProfile
form in with Django Forms, you'd like to modify the profile fields as well as some User
field.
But there is no forms.UserProfileForm
(yet?)!
How do you do that?
I stumbled across this today and after some googling I found a solution that is a bit cleaner in my opinion:
#in forms.py
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ["username", "email"]
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
#in views.py
def add_user(request):
...
if request.method == "POST":
uform = UserForm(data = request.POST)
pform = UserProfileForm(data = request.POST)
if uform.is_valid() and pform.is_valid():
user = uform.save()
profile = pform.save(commit = False)
profile.user = user
profile.save()
....
...
#in template
<form method="post">
{{ uform.as_p }}
{{ pform.as_p }}
<input type="submit" ...>
</form>