的最簡單的方法你用例是使用CSS。這是一種用於定義演示文稿的語言。看看通過形式生成的代碼,請注意id的字段的,你的興趣,並通過CSS改變這些字段的外觀。
例爲您ProductForm long_desc
場(當你的形式不具有自定義前綴):
#id_long_desc {
width: 300px;
height: 200px;
}
第二條本辦法是將attrs
關鍵字傳遞給你的窗口部件的構造。
class ProductForm(ModelForm):
long_desc = forms.CharField(widget=forms.Textarea(attrs={'cols': 10, 'rows': 20}))
short_desc = forms.CharField(widget=forms.Textarea)
class Meta:
model = Product
這是described in Django documentation。
第三種方法是讓newforms的聲明性接口保留一段時間,並在自定義構造函數中設置小部件屬性。
class ProductForm(ModelForm):
long_desc = forms.CharField(widget=forms.Textarea)
short_desc = forms.CharField(widget=forms.Textarea)
class Meta:
model = Product
# Edit by bryan
def __init__(self, *args, **kwargs):
super(ProductForm, self).__init__(*args, **kwargs) # Call to ModelForm constructor
self.fields['long_desc'].widget.attrs['cols'] = 10
self.fields['long_desc'].widget.attrs['rows'] = 20
這種方法具有以下優點:
- 您可以定義構件屬性對於那些從模型自動生成,而不重新定義整個字段的字段。
- 它不依賴於你的表格的前綴。
第二個工作完全 – 2008-09-21 07:15:09
選項3非常有用。也許這個例子還可以顯示這些字段不需要在表單中定義,但仍然可以覆蓋自動通過模型定義的字段。 – 2009-12-03 16:20:50