Горизонтальные (для ряда) формы в наборе форм Django - PullRequest
15 голосов
/ 10 февраля 2010

Как Django представляет горизонтальную форму, т. Е. По одной строке на форму? Метод as_table генерирует несколько форм по вертикали (с метками). Мне нужны поля формы в строках таблицы (по одной строке на форму), а метки должны быть сверху. Я ничего не вижу из коробки. Это почему-то обескураживает?

Я должен уточнить, что я на самом деле хочу таблицу, потому что я буду использовать виджет таблицы пользовательского интерфейса. И эта таблица должна иметь метки в.

Итак, моя желаемая структура:

<table>
  <thead>
     <tr><th>column1</th><th>column2</th></tr>
  </thead>
  <tbody>
    <tr><td>form1.value1</td><td>form1.value2</td></tr>
...
  </tbody>
</table>

Ответы [ 2 ]

27 голосов
/ 10 февраля 2010

Возможно, вы захотите попробовать что-то вроде этого http://www.djangosnippets.org/snippets/1442/

{{ formset.non_form_errors.as_ul }}
<table id="formset" class="form">
{% for form in formset.forms %}
  {% if forloop.first %}
  <thead><tr>
    {% for field in form.visible_fields %}
    <th>{{ field.label|capfirst }}</th>
    {% endfor %}
  </tr></thead>
  {% endif %}
  <tr class="{% cycle row1 row2 %}">
  {% for field in form.visible_fields %}
    <td>
    {# Include the hidden fields in the form #}
    {% if forloop.first %}
      {% for hidden in form.hidden_fields %}
      {{ hidden }}
      {% endfor %}
    {% endif %}
      {{ field.errors.as_ul }}
      {{ field }}
    </td>
  {% endfor %}
  </tr>
{% endfor %}
</table>
7 голосов
/ 10 февраля 2010

Я предлагаю использовать form.as_ul и стилизовать его под CSS, чтобы все это было в одной строке. Вы можете сделать это с помощью ul li { display: inline; } или, конечно, заменить класс или ID, если вы не хотите таким образом влиять на все UL.

Вот соответствующий раздел документации Django: http://docs.djangoproject.com/en/dev/topics/forms/#displaying-a-form-using-a-template

Edit: Чтобы удовлетворить ваши потребности в столе, вы хотите сделать что-то вроде этого ... отредактировал еще немного.

Трудно поместить все эти формы в таблицу, и при этом все еще иметь действительный HTML. Элемент формы может окружать таблицу или находиться внутри <td> ... хотя это, вероятно, все еще будет работать.

<thead>
  <tr>
   {% for field in form %}
     <th>{{ field.label }}</th>
   {% endfor %}
  </tr>
</thead>

<tbody>
 <tr class="table_row">
  <form action="/something/" method="post">
    {% for field in form %}
      <td>
       <table>
        <tr><td>{{ field.label }}</td></tr>
        <tr><td>{{ field }}</td></tr>
       </table>
      </td>
    {% endfor %}
   </form>
  </tr>
 </tbody>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...