【发布时间】:2012-08-17 18:36:44
【问题描述】:
我在尝试 POST 表单时遇到错误,这没有多大意义。
错误:
MultiValueDictKeyError at /admin/courses/course-selector/add/
"Key 'form-0-id' not found in <QueryDict:
所以我已经完成了谷歌搜索并解决了这个问题,因为我自己在绘制表单(我已经建立了一个表格并在我想要的位置打印了每个字段)。
所以我尝试添加一个带有 id 的字段,但它不打印。它只是没有模板中的 id 供我写入表单。我不知道现在该怎么办,因为我已经关注了谷歌针对此案例的既定建议,并发现了一个问题。
模板代码。
<form action="." method="POST" id="formset">
<table>
<tr>
{{ formset.management_form }}
</tr>
<tr>
<th></th>
{% for field in formset.forms.0 %}
{% if not field.is_hidden %}
<th>{{ field.label }}</th>
{% endif %}
{% endfor %}
</tr>
{% for f in formset.forms %}
<tr>
<td><input type="checkbox" id="checkbox_{{ f.id }}" /></td>
<td>{{ f.id }}</td>
{% for field in f %}
{% if not field.is_hidden %}
<td>
{{ field.errors }}
{{ field }}
</td>
{% else %}
<td valign="bottom">{{ field }}</
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</table>
</form>
为简洁起见...
为什么 {{ f.id }} 不输出任何内容。
编辑1 添加生成表单集的代码,这可能是我没有得到 id 的原因。
InstanceFormSet = formset_factory(BulkAddInstanceForm, extra=0)
# build the list for populating the forms
n, datalist = 0, []
while n < int(input_data['copies']):
datalist.append(data)
n +=1
formset = InstanceFormSet(initial=datalist)
【问题讨论】:
-
嗯,也许是个愚蠢的问题,这是因为表单集基于没有 id 字段的表单吗?还是应该自动生成id?
-
f.id应该是什么?一个字段? -
f 是表单,所以 f.id 是表单的 id。因此询问表单集是否为表单生成一个 id。将添加表单集的生成以清除它。
-
stackoverflow.com/questions/9611232/… 在这个划线的问题上发现了完全相同的问题,但他的解决方案对我不起作用。我应该补充一下,我们在 django 1.3 上,所以在 1.4 中的表单集中的表单中添加了一个 id 吗?
-
我仍然不明白为什么您认为表单应该具有
id属性。这不是表单默认的东西,这就是为什么我问你是否定义了一个名为id的字段。