У меня есть эта модель
summary = models.TextField()
Но я хочу иметь только 4 строки и 15 столбцов.
Также, если я это делаю, мне нужно снова установить базу данных или нет.
У меня есть эта модель
summary = models.TextField()
Но я хочу иметь только 4 строки и 15 столбцов.
Также, если я это делаю, мне нужно снова установить базу данных или нет.
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}),
}
Вот эквивалент формы для изменения атрибута 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']
Надеюсь, это поможет тем, кто ищет конкретную форму
Если вы используете django-crispy-forms, в вашей функции __init__()
вы можете получить доступ к виджетам attrs следующим образом:
self.fields['summary'].widget.attrs['rows'] = 4
self.fields['summary'].widget.attrs['columns'] = 15
Я предполагаю, что вы можете установить attrs таким образом в нехирурном формате ModelForm, но вы также можете сделать это в своем определении виджетов, как показано выше. Я только что нашел этот пост и подумал, что поделюсь тем, как я сделал это с crispyforms.
Пакет django-widget-tweaks
делает это довольно простым. В вашем шаблоне:
{% load widget_tweaks %}
...
{{ mytextareafield|attr:"rows:3" }}
Вы также можете использовать jQuery следующим образом:
$(document).ready(function(){
$("textarea").attr({"rows": "4",
"cols": "15"
});
});
Первый ответ может быть правильным для вопроса, но пакет django-widget-tweaks также является отличным вариантом для изменения большего количества атрибутов, например, для установки определенного класса CSS.
Итак, рассмотрите эту опцию, если вы хотите легко изменить другие атрибуты.
Сначала вы должны установить настройки виджета 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" }}