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--')
精彩评论