ModelFormでfieldのwidgetを変更する

前提

Django 1.2以降がインストールされていること

widgetの変更

Django 1.2より前では、ModelForm上でwidgetを変更するには

from django import forms
from django.forms.widgets import Textarea
from appname.models import Blog

class BlogForm(forms.ModelForm):
    content = forms.CharField(widget = Textarea)
    class Meta:
        model = Blog

としていましたが、
Django 1.2以降ではMetaクラスのオプションとしてwidgetsが追加されました。

from django import forms
from django.forms.widgets import Textarea
from appname.models import Blog

class BlogForm(forms.ModelForm):
    class Meta:
        model = Blog
        widgets = {
            'content': Textarea,
        }

field名とwidgetを指定するだけで簡単に変更できます。

twitter 2010-03-01 02:08:35.061436

Recent Updates

URLConf Tip 01 - キャプチャの有無にかかわらず同一のviewで処理する
Markdownの入力補助"wmd"をAdmin siteで使う
ModelFormでfieldのwidgetを変更する
動的なformを作る 6 - Dynamic Inline Admin site編
Formsetsを使う3 - inlineformset_factory編
動的なformを作る 5 - django-dynamic-formset編
Formクラスからメディアを定義する
複数のmodelを結合する 2 - Proxy model編
複数のmodelを結合する 1
ModelFormでfieldの表示順番を変える
Admin siteのwidgetを個別に変更する
formfield_overridesを使ってAdmin siteのwidgetを変更する
Admin siteのlist_displayをカスタマイズする - リンク編
Admin siteのlist_displayをカスタマイズする - 基本編
Admin siteのTextareaの高さを自在に変更する - admin.py編