Как установить размер строк, столбцов в textField в моделях Django
У меня есть эта модель
summary = models.TextField()
Но я хочу иметь только 4 строки и 15 столбцов.
Также, если я это делаю, мне нужно снова установить базу данных или нет.
Ответы
Ответ 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" }}