Подтвердить что ты не робот

Как установить размер строк, столбцов в textField в моделях Django

У меня есть эта модель

summary         = models.TextField()

Но я хочу иметь только 4 строки и 15 столбцов.

Также, если я это делаю, мне нужно снова установить базу данных или нет.

4b9b3361

Ответ 1

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}),
        }

Ответ 2

Вот эквивалент формы для изменения атрибута rows/cols в текстовое поле. Используйте виджеты 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']

Надеюсь, это поможет тем, кто ищет конкретную форму

Ответ 3

Если вы используете django-crispy-forms, в вашей функции __init__() вы можете получить доступ к виджетам attrs следующим образом:

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

Я предполагаю, что вы можете установить attrs таким образом в нехирурном формате ModelForm, но вы также можете сделать это в своем определении виджетов, как показано выше. Я только что нашел этот пост и подумал, что поделюсь тем, как я сделал это с crispyforms.

Ответ 4

Пакет django-widget-tweaks делает это довольно простым. В вашем шаблоне:

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

Ответ 5

Вы также можете использовать jQuery следующим образом:

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

Ответ 6

Первый ответ может быть правильным для вопроса, но пакет django-widget-tweaks также является отличным вариантом для изменения большего количества атрибутов, например, для установки определенного класса CSS.

Итак, рассмотрите эту опцию, если вы хотите легко изменить другие атрибуты.

Ответ 7

Сначала вы должны установить настройки виджета django, используя:

pip install django-widget-tweaks

Затем вам нужно перейти к параметру setup.py и добавить "widget_tweaks" к установленным приложениям следующим образом:

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

Затем перейдите в свой шаблон html и замените его на {{field}}, чтобы изменить размер текстового поля:

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