我有这个模型
summary = models.TextField()
但我只想有4行15列。另外,如果我这样做,我是否需要再次安装数据库。
d4so4syb1#
TextField是一种字段类型,当ModelForm使用时,默认情况下使用Textarea小部件。Fields处理后端存储,widgets处理前端编辑。因此,您需要指定要与字段配合使用的小部件。您想要创建一个ModelForm并指定要使用的widget,请参阅文档:
TextField
ModelForm
Textarea
widget
from django import forms class MyForm(forms.ModelForm): class Meta: model = MyModel widgets = { 'summary': forms.Textarea(attrs={'rows':4, 'cols':15}), }
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']
希望这有助于那些寻找形式具体
ni65a41a3#
如果你使用的是django-crispy-forms,在__init__()函数中,你可以像这样访问widget attrs:
__init__()
self.fields['summary'].widget.attrs['rows'] = 4 self.fields['summary'].widget.attrs['columns'] = 15
我认为您可以在非简洁形式的ModelForm中以这种方式设置属性,但您也可以在小部件定义中这样做,如上所示。我刚刚发现这篇文章,并认为我会分享我是如何做到这一点与crispyforms。
oipij1gg4#
你也可以使用jQuery如下:
$(document).ready(function(){ $("textarea").attr({"rows": "4", "cols": "15" }); });
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" }}
6g8kf2rb6#
django-widget-tweaks包使这一点非常简单。在您的模板中:
django-widget-tweaks
{% load widget_tweaks %} ... {{ mytextareafield|attr:"rows:3" }}
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}), }
sd2nnvve8#
第一个答案可能是正确的,但django-widget-tweaks包也是更改更多属性的好选择,例如设置特定的CSS类。因此,如果您想轻松更改其他属性,请考虑该选项。
8条答案
按热度按时间d4so4syb1#
TextField
是一种字段类型,当ModelForm
使用时,默认情况下使用Textarea
小部件。Fields处理后端存储,widgets处理前端编辑。因此,您需要指定要与字段配合使用的小部件。您想要创建一个
ModelForm
并指定要使用的widget
,请参阅文档:2sbarzqh2#
下面是将rows/cols属性更改为textarea的表单特定等效项。使用forms.Textarea小部件并设置attrs字典值:
希望这有助于那些寻找形式具体
ni65a41a3#
如果你使用的是django-crispy-forms,在
__init__()
函数中,你可以像这样访问widget attrs:我认为您可以在非简洁形式的ModelForm中以这种方式设置属性,但您也可以在小部件定义中这样做,如上所示。我刚刚发现这篇文章,并认为我会分享我是如何做到这一点与crispyforms。
oipij1gg4#
你也可以使用jQuery如下:
cxfofazt5#
首先,你必须使用以下命令安装django widget tweaks:
然后你必须去setting.py并添加'widget_tweaks'到安装的应用程序中,如下所示:
然后转到您的html模板,并将其替换为{{ field }},以调整文本字段的大小:
6g8kf2rb6#
django-widget-tweaks
包使这一点非常简单。在您的模板中:50few1ms7#
在 meta中使用Widget请记住,您还必须在modelform中添加该字段
sd2nnvve8#
第一个答案可能是正确的,但django-widget-tweaks包也是更改更多属性的好选择,例如设置特定的CSS类。
因此,如果您想轻松更改其他属性,请考虑该选项。