Я пытаюсь сделать редактируемый профиль пользователя и нашел, как добавить в него некоторые поля ... Но также мне нужно сделать редактируемые имя и фамилию, адрес электронной почты и одно поле для изменения пароля пользователя , Теперь у меня есть только пользовательские и дополнительные поля в моей форме ...Расширяет профиль пользователя в Django
Как я могу это понять?
Моя модель:
import PIL
from django.db import models
from django.contrib.auth.models import User
from PIL import Image
from django.db import models
# Create your models here.
class UserProfile(models.Model):
user = models.OneToOneField(User)
user_phone = models.CharField(max_length=140, blank=True, null=True)
user_picture = models.ImageField(upload_to='users', blank=True, null=True)
user_balance = models.IntegerField(default=0)
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u) [0])
forms.py
Мои:
from django import forms
from userprofile.models import UserProfile
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('user', 'user_phone', 'user_picture', 'user_balance')
Мое мнение:
from django.shortcuts import render, render_to_response
from django.shortcuts import HttpResponseRedirect, Http404
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.core.context_processors import csrf
# Create your views here.
from userprofile.forms import UserProfileForm
from userprofile.models import UserProfile
def user_profile(request):
if request.method == 'POST':
form = UserProfileForm(request.POST, instance=request.user.profile)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
else:
user = request.user
profile = user.profile
form = UserProfileForm(instance=profile)
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('profile.html', args)
И мой шаблон:
{% for field in form %}
{{ field.error }}
{% endfor %}
<form action="https://stackoverflow.com/users/profile/" method="POST">{% csrf_token %}
{{ form.as_ul }}
<input type="submit" value="Update" />
</form>
Это первый я попытался сделать, конечно)) Это не работает ... 'Unknown поля (ов) (user.last_name), установленного для UserProfile' И так далее для всех другие поля ... –
Итак, что вам нужно сделать, так это создать вторую форму для модели User, я обновляю свой ответ, чтобы вы могли его увидеть. – lapinkoira
Я не понимаю, как реализовать две формы для одного представления и сделать как на одной странице ...:/ –