基于POST d向Django表单集添加新表单

2024-10-01 07:15:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用POST请求中的数据填充Django表单集。我可以正确地显示表单集并再次实例化它,但我遇到了一个问题,即表单集的末尾有两个空白行,这是不可取的。下面是我们一直在使用的函数视图.py公司名称:

在表单.py在

class DepositForm(forms.Form):
    InsID = forms.IntegerField()
    DepositTypeID = forms.IntegerField()
    DepositAmount = forms.IntegerField()
    Account = forms.IntegerField()

DepositFormSet = formset_factory(DepositForm, extra=1)

在视图.py在

^{pr2}$

在dep.html文件在

<form action="" method="post">  

{{formset.management_form}}
{% for form in formset.forms %}
    {{form.errors }}
    {% for field in form %}
        {{field.label}}: {{field}}
    {% endfor %}
  <br />
{% endfor %}

<input type="submit" name="add" value="Add Deposit"></input>

</form>

这应该是所有相关的代码。无论如何,模板将显示整个表单集,其中应该包括一个空行(或者,在出现错误的情况下,没有空行,而是最后一行上方的错误消息)。当最后一行为空时,单击“添加”时出现问题。在代码中,这仍然有效formset.is\u有效吗(),因此它会用一个额外的字段创建新的表单集。如果单击此处添加,则返回错误,但仍允许您填写除最后一行以外的所有内容并生成有效的表单集。有没有办法告诉我的表单集,空白表单应该无法通过验证?或者还有更好的方法吗?该页面最终计划集成一些jquery内容,因此,虽然这并不理想,但如果有一种使用jquery工具解决这个问题的好方法,那么这可能就足够了。谢谢!在


Tags: 代码inpyform视图表单fieldfor
2条回答

在你的视图.py公司名称:

-            formset = DepositFormSet(initial=formset.cleaned_data)
+            data = formset.cleaned_data
+            if data[-1]=={}:
+                data=data[:-1]
+            formset = DepositFormSet(initial=data)

它看起来更像是一个功能而不是一个bug;)

我自己没有这样做,但是如果你想用一个空白条目使它无效,也许你可以考虑把它放在clean方法中:

http://docs.djangoproject.com/en/dev/topics/forms/formsets/#custom-formset-validation

相关问题 更多 >