ツチダ
unread,Feb 14, 2012, 9:06:02 AM2/14/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to django-ja
はじめまして。ツチダと申します。よろしくお願いします。
Python 2.6.6、Django 1.3.1を使用しています。
DjangoのModelFormが大変便利だと感じ使っているのですが、例えばテキストインプットのsizeだけ変更したい場合等は、フィールドの再
定義が冗長ではないかと感じており、うまい方法がないか探しています。
class Person(models.Model):
name = models.CharField(u'名前', max_length=255)
class PersonForm(forms.ModelForm):
name = forms.CharField(label=u'名前',
widget=forms.TextInput(attrs={'size':'40'})
class Meta:
model = Person
せっかくDjango側で、Personモデルのnameフィールドの定義に合わせてPersonFormのラベルやフィールドタイプ、ウィジットをデ
フォルト定義してくれるので、それをほぼ同じ内容で上書きするのはあまりスマートでは無いかなと思い下記のようなコードを書いてみました。
class PersonForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(PersonForm, self).__init__(*args, **kwargs)
self.fields['name'].widget.attrs.update({'size':'40'})
class Meta:
model = Person
一応私の環境では動いてはいるのですが、ちょっと力技すぎるのではないか、動かないケースがあるのではないか、もっと正しい(?)手続き方法があるので
はないかと思っているのですが、良い方法は無いでしょうか。
Python歴が短く、説明やコードに不足・不備がありましたら指摘してもらえると助かります。