DjangoのFormに動的な初期値を入れる

DjangoのFormを表示する時の初期値の設定。

forms.py
# coding: utf-8

from django import forms
from app.models import Order

class OrderForm(forms.ModelForm):
    name = forms.CharField(
        max_length = 200,
        initial = u'鈴木太郎',        # 初期値
    )

    class Meta:
        model = Order

他のモデルから持ってきた値を初期値に入れる。

views.py
# coding: utf-8

from django.shortcuts import get_object_or_404
from django.views.generic.simple import direct_to_template
from app.models import Order, Customer
from app.forms import OrderForm

def orderRegister(request):
    num = 1
    customer = get_object_or_404(Customer, id=num)
    form  = OrderForm(initial = {
        'name': customer.name})        # 初期値

    return direct_to_template(request, 'some.html',
        extra_context = {
            'form': form,
        },
    )