如何确定formset中的哪些表单有效并填写?

时间:2011-02-09 20:30:30

标签: django django-forms

如果你看example here

>>> for form in formset:
...     print form.as_table()
<tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Django is now open source" id="id_form-0-title" /></td></tr>
<tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-12" id="id_form-0-pub_date" /></td></tr>
<tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" id="id_form-1-title" /></td></tr>
<tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" id="id_form-1-pub_date" /></td></tr>
<tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title" /></td></tr>
<tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date" /></td></tr>

你会看到第一个表格已填写,第二个表格未填写。我想将填写的表单呈现为隐藏,另外2表示为可见。我如何区分这两者?

我认为form.is_valid对于formset中的空白表单会返回true,不是吗?

2 个答案:

答案 0 :(得分:0)

如果要将现有模型隐藏起来,为什么还要渲染现有模型呢?

以下内容只会为您提供一组空表单,不包括任何现有对象:

formset = MyFormset(queryset=MyModel.objects.none())

答案 1 :(得分:0)

没关系......解决方案实际上很简单。

{{vehicle_formset.management_form}}
{% if vehicle_formset.initial_forms %}
    {% for vehicle_form in vehicle_formset.initial_forms %}
            {% for field in vehicle_form %}{{ field.as_hidden}}{% endfor %}
    {% endfor %}
{% endif %}
{% for vehicle_form in vehicle_formset.extra_forms %}
      <!-- render non-hidden forms -->
{% endfor %}