У меня такая форма:

from django import forms    
class PostForm(forms.Form):
    message = forms.CharField(widget=forms.Textarea)

И следующая часть в моем шаблоне

<p>{{ form.message }}</p>

Он отображает поле как текстовое поле, как указано. Хотя для шаблона я хочу установить его на 4 строки и 25 столбцов, не касаясь определения формы. Это возможно?

3
Jokey 26 Май 2011 в 16:21

3 ответа

Лучший ответ
class PostForm(forms.Form):
     message = forms.CharField(widget=forms.Textarea)

    def set4x25(self):
        self.fields['message'].widget.attrs = {'rows':'4', 'cols': '25'}

И в шаблоне:

{{ form.set4x25 }}
{{ form.message }}

Вы можете настроить эту идею по своему усмотрению.

5
DrTyrsa 26 Май 2011 в 16:28
Это слишком просто: D: D Спасибо
 – 
Jokey
26 Май 2011 в 16:40
1
Это касается определения формы, не так ли?
 – 
Andrey Fedoseev
26 Май 2011 в 16:45
Федосеев Я думаю, что Jokey означает объявление полей формы.
 – 
DrTyrsa
26 Май 2011 в 16:50

Вы можете сделать это в шаблоне с помощью django-widget-tweaks:

{% load widget_tweaks %}
<p>{% render_field form.message rows="4" cols="25" %}</p>

Или

{% load widget_tweaks %}
<p>{{ form.message|attr:"rows:4"|attr:"cols:25" }}</p>
2
Mikhail Korobov 22 Мар 2012 в 12:44

Вы не можете сделать это из шаблона, но можете:

  1. Используйте CSS, чтобы указать ширину и высоту текстового поля. Это переопределит атрибуты строк и столбцов

  2. Отрисовываем поле вручную:

      {% with form.message as field %}
      <textarea name="{{ field.html_name }}"
                id="{{ field.html_initial_id }}"
                rows="4" cols="25">{% if field.data %}{{ field.data }}{% endif %}</textarea>
      {% endfor %}
    
0
Andrey Fedoseev 26 Май 2011 в 16:43