开发者

django combining forms with elements from a list in a table

开发者 https://www.devze.com 2023-02-21 06:17 出处:网络
I have the following problem. I am trying to create a form like a 2D array where you can input values for several characteristics on several objects. This resulted in a formset of forms for the indivi

I have the following problem. I am trying to create a form like a 2D array where you can input values for several characteristics on several objects. This resulted in a formset of forms for the individual objects displayed in a table with the individual forms displayed horizontally.

My template looks like this at the moment: `

<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 %}

`

This is code that was taken from the net btw. Now what I would like to do is somehow put a column in front of the table with just some text stating the name of the object, however i can't seem to do it.

I have tried to add them from a list, but then the problem is that it is not possible to access the right element from the list. Looping through the list results in the same problem.

I also tried adding a hidden field to the forms, setting the value of that field in the view, and then trying to开发者_Python百科 recover it using something like form.my_field.value but i can't seem to actually get the value from the field. I did manage to get the name of the field, but the value just was not possible.

I can imagine doing this using some javascript but that is really a last resort. It seems to me that something as basic as this has to have a nice serverside solution.

Any thoughts?


If you are using Django 1.3, you can render the raw value of a form field. Assuming you want to render the value of a field called name:

{{ form.name.value }}


I suppose there could be fews solutions, one will be to use existing field properties like name or description - then data will be bindend with the field itself.

you can add custom properties to the form fields and reference them in the code.

or use a custom template tag, which will return a text when field name will be passed as a parameter:

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

@register.simple_tag
def get_text(name):
    return NAMES.get(name, u'--no description--')
0

精彩评论

暂无评论...
验证码 换一张
取 消