Django объединяет формы с элементами из списка в таблице - PullRequest
0 голосов
/ 02 апреля 2011

У меня следующая проблема. Я пытаюсь создать форму, похожую на 2D-массив, где вы можете ввести значения для нескольких характеристик на нескольких объектах. Это привело к тому, что набор форм для отдельных объектов отображался в таблице, а отдельные формы отображались горизонтально.

Мой шаблон выглядит следующим образом: `

<table id="formset" class="form">
{% for form in formset.forms %}

    {% if forloop.first %}
        <thead><tr>
        <th></ th>
        {% for field in form.visible_fields %}
            <th>{{ field.label|capfirst }}</th>
            {% endfor %}
        </tr></thead>
    {% endif %}
    <tr class="{% cycle row1,row2 %}">

    <td>  {{ ?? }}  </ td>

    {% for field in form.visible_fields %}
        <td>
        {# Include the hidden fields in the form #}
        {% if forloop.first %}
            {% for hidden in form.hidden_fields %}
                {{ hidden.name }}
            {% endfor %}
        {% endif %}
        {{ field.errors.as_ul }}
        {{ field }}
        </td>
    {% endfor %}
    </tr>
{% endfor %}

`

Это код, который был взят из сети, кстати. Теперь я хотел бы как-то поставить столбец перед таблицей, содержащий текст с указанием имени объекта, однако я не могу этого сделать.

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

Я также попытался добавить скрытое поле в формы, установить значение этого поля в представлении, а затем попытаться восстановить его, используя что-то вроде form.my_field.value но я не могу получить значение из поля. Мне удалось получить имя поля, но это значение было невозможно.

Я могу представить, что делаю это с использованием некоторого JavaScript, но это действительно последнее средство. Мне кажется, что что-то такое базовое, как это, должно иметь хорошее серверное решение.

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2011

Я полагаю, что может быть несколько решений, одно из них будет использовать существующие свойства поля, такие как name или description - тогда данные будут связаны с самим полем.поля формы и ссылки на них в коде.

или используйте специальный тег шаблона, который будет возвращать текст, когда имя поля будет передано в качестве параметра:

NAMES = {
    'field1': u'my description1',
    'field2': u'smthg else'
}

@register.simple_tag
def get_text(name):
    return NAMES.get(name, u'--no description--')
0 голосов
/ 02 апреля 2011

Если вы используете Django 1.3, вы можете отобразить необработанное значение поля формы . Предполагая, что вы хотите отобразить значение поля с именем name:

{{ form.name.value }}
...