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 件のコメント:
コメントを投稿