如何在Django Models中设置textField中行,列的大小

Ran*_*ngh 46 django django-models

我有这个模型

summary         = models.TextField()
Run Code Online (Sandbox Code Playgroud)

但我想只有4行15列.

此外,如果我这样做,我需要再次安装数据库.

Dom*_*ger 109

TextField是一种字段,ModelForm默认使用时使用Textarea窗口小部件.Fields处理后端存储,使用前端编辑的小部件.

因此,您需要指定要与字段一起使用的窗口小部件.您希望根据文档创建ModelForm并指定widget要使用的内容:

from django import forms

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        widgets = {
          'summary': forms.Textarea(attrs={'rows':4, 'cols':15}),
        }
Run Code Online (Sandbox Code Playgroud)

  • 呃,不...这是一个模型字段,而不是表单字段。 (2认同)

rad*_*tek 17

以下是将rows/cols属性更改为textarea的特定于表单的等效项.使用forms.Textarea小部件并设置attrs字典值:

class LocationForm(forms.ModelForm):

    auto_email_list = forms.CharField(required=False, widget=forms.Textarea(attrs={'rows': 2, 'cols': 40}))
    notes = forms.CharField(required=False, widget=forms.Textarea(attrs={'rows': 4, 'cols': 40}))

    class Meta:
        model = Location
        exclude = ['id']
Run Code Online (Sandbox Code Playgroud)

希望这有助于那些寻找特定形式的人


小智 10

如果你正在使用django-crispy-forms,__init__()你可以在你的函数中访问小部件attrs,如下所示:

self.fields['summary'].widget.attrs['rows'] = 4
self.fields['summary'].widget.attrs['columns'] = 15
Run Code Online (Sandbox Code Playgroud)

我想你可以用非脆性形式的ModelForm这样设置attrs,但你也可以在你的widget定义中做,如上图所示.我刚发现这篇文章,并认为我会分享我是如何用crispyforms做的.


MRR*_*MRR 5

您还可以如下使用jQuery:

 $(document).ready(function(){
    $("textarea").attr({"rows": "4",
                        "cols": "15"
    });
});
Run Code Online (Sandbox Code Playgroud)