次のようなモデルがあるとしましょう。
models.py
class Profile(models.Model):
user = models.OneToOneField(User)
middle_name = models.CharField(max_length=30, blank=True, null=True)
email
そして、ModelFormに次のようなカスタムフィールドがあります
forms.py
class ProfileForm(ModelForm):
email = forms.CharField()
class Meta:
model = models.Profile
fields = ('email', 'middle_name')
上記のモデルフォームのインスタンスを設定しているので、次のように編集テンプレートのフォームにデータが事前に入力されます。
views.py
def edit_profile(request):
profile = models.Profile.objects.get(user=request.user)
profileform = forms.ProfileForm(instance=profile)
return render_to_response('edit.html', { 'form' : 'profileform' }, context_instance=RequestContext(request))
これで、フォームでプロファイルモデルのすべてのフィールドにすべての値が事前に入力されましたが、カスタムフィールドは空であり、意味があります。
しかし、カスタムフィールドの値を事前に入力する方法はありますか?多分次のようなものです:
email = forms.CharField(value = models.Profile.user.email)