Django 1.5系列で試していますが、それ以降でもおそらく変わらないはず。
方法:
Formを生成する際に初期値をDictionary形式で渡す。
form = forms.ProfileForm({"email":request.user.email,"language":profile.language})
以下、全体像です。
forms.pyでFormのclassを定義し、view.pyで初期値を入れたformを返しています。
#forms.py
from django import forms
from django.conf import settings
class ProfileForm(forms.Form):
email = forms.EmailField(
label=_('mail address'),
required=True,
)
language = forms.ChoiceField(
label=_('language'),
required=True,
choices=settings.LANGUAGES,
)
#views.py
@login_required
def formProfile(request):
profile = Profile(user=request.user,language=request.LANGUAGE_CODE)
form = None
if request.method == 'POST':
form = forms.ProfileForm(request.POST)
if form.is_valid():
profile.user.email=form.email
profile.user.save()
profile.language=form.language
profilef.save()
else:
form = forms.ProfileForm({"email":request.user.email,"language":profile.language})
return render(request, 'profile.html', {
'form': form,
})
0 件のコメント:
コメントを投稿