質問

変更するには、どうすればいいで幅textareaフォーム要素の場合に使用したModelFormホームページを作成いたします。?

こちらの商品のクラス:

class ProductForm(ModelForm):
    long_desc = forms.CharField(widget=forms.Textarea)
    short_desc = forms.CharField(widget=forms.Textarea)
    class Meta:
        model = Product

のテンプレートコー---

{% for f in form %}
    {{ f.name }}:{{ f }}
{% endfor %}

f では実際のフォーム要素...

役に立ちましたか?

解決

最も簡単な方法はご利用の場合は、CSSを利用.この言語の意味を定義す。のコード生成される形となりますのでご注意下さid分野に興味のある変更の外観はこれらの分野のをCSS.

long_desc 分野におProductFormがございませんのでカスタムprefix):

#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

この に記載のDjangoの文書.

第三のアプローチ ですが、素敵なコインタフェース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

このアプローチのメリットは次のとおりです:

  • を定義できますウィジェットの属性の分野で生成されるから自動的にモデルの再定義の全体ます。
  • なの接頭辞のです。

他のヒント

優れた回答によるzuber、私がエラーの例のコード第三のアプローチ.コンストラクタは:

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['cols'] = 20

のオブジェクトには無いのでattrs'属性は、そのウィジェット。

場ご利用の増加のようなGrappelliる重用スタイルをよく目にすることでしょうる任意のメソッドの行と列の属性の取得を無視でCSSセレクタとおwidgetとなります。この利用の場合zuberの優れた二次または第三のアプローチです。

この場合、最初のアプローチを配合のいずれかの又は第三のアプローチにより設定の"スタイル属性の代わりに"行"と"cols属性.

この例の修正 init の第三のアプローチ上記:

def __init__(self, *args, **kwargs):
    super(ProductForm, self).__init__(*args, **kwargs) # Call to ModelForm constructor
    self.fields['short_desc'].widget.attrs['style'] = 'width:400px; height:40px;'
    self.fields['long_desc'].widget.attrs['style']  = 'width:800px; height:80px;'

セット列とcssクラスのお管理モデルのビュー:

'explicacion': AutosizedTextarea(attrs={'rows': 5, 'class': 'input-xxlarge', 'style': 'width: 99% !important; resize: vertical !important;'}),
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top