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

c2e8gylq  于 2023-05-19  发布在  Go
关注(0)|答案(8)|浏览(276)

我有这个模型

summary = models.TextField()

但我只想有4行15列。
另外,如果我这样做,我是否需要再次安装数据库。

d4so4syb

d4so4syb1#

TextField是一种字段类型,当ModelForm使用时,默认情况下使用Textarea小部件。Fields处理后端存储,widgets处理前端编辑。
因此,您需要指定要与字段配合使用的小部件。您想要创建一个ModelForm并指定要使用的widget,请参阅文档:

from django import forms

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        widgets = {
          'summary': forms.Textarea(attrs={'rows':4, 'cols':15}),
        }
2sbarzqh

2sbarzqh2#

下面是将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']

希望这有助于那些寻找形式具体

ni65a41a

ni65a41a3#

如果你使用的是django-crispy-forms,在__init__()函数中,你可以像这样访问widget attrs:

self.fields['summary'].widget.attrs['rows'] = 4
self.fields['summary'].widget.attrs['columns'] = 15

我认为您可以在非简洁形式的ModelForm中以这种方式设置属性,但您也可以在小部件定义中这样做,如上所示。我刚刚发现这篇文章,并认为我会分享我是如何做到这一点与crispyforms。

oipij1gg

oipij1gg4#

你也可以使用jQuery如下:

$(document).ready(function(){
    $("textarea").attr({"rows": "4",
                        "cols": "15"
    });
});
cxfofazt

cxfofazt5#

首先,你必须使用以下命令安装django widget tweaks:

pip install django-widget-tweaks

然后你必须去setting.py并添加'widget_tweaks'到安装的应用程序中,如下所示:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'widget_tweaks',
)

然后转到您的html模板,并将其替换为{{ field }},以调整文本字段的大小:

{% load widget_tweaks %}
{{ mytextareafield|attr:"rows:4" | "cols:30" }}
6g8kf2rb

6g8kf2rb6#

django-widget-tweaks包使这一点非常简单。在您的模板中:

{% load widget_tweaks %}
...
{{ mytextareafield|attr:"rows:3" }}
50few1ms

50few1ms7#

在 meta中使用Widget请记住,您还必须在modelform中添加该字段

class MyModelForm(forms.ModelForm):
    address = forms.CharField()
        
    class Meta:
        model = MyModel
        exclude = ()
        widgets = {
            address': forms.Textarea(attrs={'rows':1, 'cols':15}),
        }
sd2nnvve

sd2nnvve8#

第一个答案可能是正确的,但django-widget-tweaks包也是更改更多属性的好选择,例如设置特定的CSS类。
因此,如果您想轻松更改其他属性,请考虑该选项。

相关问题