Django: отображать текст между полями формы - PullRequest
0 голосов
/ 01 сентября 2011

Привет Stackoverflow люди,

Я отображаю большую форму через цикл:

    <table>
    {% for field in projectDetailForm %}
    <tr>
        <td> {{ field.label_tag }} </td>
        <td> {{ field }} </td>
    </tr>
    {% endfor %}
    </table>  

Я хотел бы прервать таблицу полями формы после нескольких полей формы, чтобы отобразить больше объяснений. Поскольку форма довольно большая (20 полей), я бы хотел избежать «ручного отображения» каждого поля формы (как описано здесь ).

Есть ли способ отобразить текстовую форму внутри цикла, либо после x-го цикла, либо после определенного поля формы?

Спасибо за совет!

Ответы [ 3 ]

0 голосов
/ 01 сентября 2011

Я бы либо использовал forloop.counter, либо установил пользовательский атрибут в поле формы при инициализации формы, и отобразил бы атрибут так же, как вы отображаете field.label_tag

0 голосов
/ 01 сентября 2011

Вы можете добавить метод к вашей форме, который будет возвращать поля по частям. Что-то вроде:

def by_5(self):
    iterable = iter(self)
    zipped = zip(*([iterable] * 5)) # replace 5 by desired n
    for z in zipped:
        yield z
    remained = list(iterable)
    if remained:
        yield remained

Тогда в шаблоне:

<table>
{% for fields in projectDetailForm.by_5 %}
    {% for field in fields %}
    <tr>
        <td> {{ field.label_tag }} </td>
        <td> {{ field }} </td>
    </tr> 
    {% endfor %}
    <tr><td colspan="2">Hi there!</td></tr>
{% endfor %}
</table>  
0 голосов
/ 01 сентября 2011

Существует {{ forloop.counter }} и {{ forloop.counter0 }} (1-индексированный и 0-индексированный соответственно), которые вы можете использовать.

Для получения дополнительной информации, проверьте эту ссылку Djangobook .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...