How can i set the size of rows , columns in textField in Django Models

丶灬走出姿态 提交于 2019-12-31 08:44:06

问题


I have this Model

summary         = models.TextField()

But I want to have only 4 rows and 15 columns.

Also if I do that do I need to install database again or not.


回答1:


TextField is a type of field, which when used by a ModelForm by default uses the Textarea widget. Fields deal with backend storage, widgets with front-end editing.

So you need to specify the widget you want to go with your field. You want to create a ModelForm and specify the widget you want to use, per the documentation:

from django import forms

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



回答2:


Here is the form specific equivalent for changing the rows/cols attribute to a textarea. Use the forms.Textarea widget and set attrs dictionary values:

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']

Hope this helps those looking for form specific




回答3:


If you're using django-crispy-forms, in your __init__() function you can access the widget attrs like so:

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

I suppose you could set the attrs this way it in a non crispy-form ModelForm, but you may as well do it in your widget definition, as shown above. I just found this post and thought I'd share how I did it with crispyforms.




回答4:


You can also use jQuery as follows:

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



回答5:


The django-widget-tweaks package makes this quite simple. In your template:

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



回答6:


The first answer may be the right one for the question, but the django-widget-tweaks package is also a great option for changing more attributes, for instance set specific CSS class.

So consider that option if you want to alter another attributes easily.




回答7:


First you have to install django widget tweaks by using:

pip install django-widget-tweaks

Then you have to go to setting.py and add 'widget_tweaks' to installed apps like this:

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

Then go to your html template and replace this with {{ field }}, to resize your text field:

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


来源:https://stackoverflow.com/questions/6536373/how-can-i-set-the-size-of-rows-columns-in-textfield-in-django-models

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!