【问题标题】:Using extra and max_num in a Django formset在 Django 表单集中使用 extra 和 max_num
【发布时间】:2012-10-02 18:53:38
【问题描述】:

我有一个没有与之关联的模型的表单集,我希望能够在所有现有表单都有效后向表单集添加一个表单,因此阅读文档时,我发现:“如果 max_num 的值更大超过现有对象的数量,最多额外的额外空白表单将添加到表单集中,只要表单总数不超过 max_num。”(https://docs.djangoproject.com/en/dev/topics /forms/formsets/#limiting-the-maximum-number-of-forms):

所以我这样做了:

FormSet = formset_factory(SomeForm, extra=2, max_num=10)
    if request.method == 'POST':
        formset = FormSet(data=request.POST)
    else:
        formset = FormSet()

还有这个:

<form action="" method="POST">
{{ formset }}
<input type="submit" value="Next" />
</form>

希望看到 2 个空表格,如果我填写一个(或 2 个)表格并按“下一步”,我会得到额外的表格。但是,即使我有 1 或 2 个有效表单,模板中也只会显示 2 个表单。

这应该如何工作?我是否误解了文档?我的代码错了吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    我找到了我的问题的部分答案:我得到了它的工作,但我发现解决方案不是很像 Django。我希望这些事情会自动发生,没有下面的麻烦。

    不管怎样,我改变了看法:

    if request.method == 'POST':
        formset = FormSet(data=request.POST)
        if formset.is_valid():
            clean_data = formset.cleaned_data
            if not any(not(len(f)) for f in clean_data):
                formset = FormSet(initial=clean_data)
    else:
        formset = FormSet()
    

    因此,我使用 POST 数据中的 clean_data 重新实例化了表单集,并添加了一些内容以防止在仍有空表单时按“下一步”弹出额外的表单。

    它有效,但我真的不认为这应该是这样做的方法。

    【讨论】:

      猜你喜欢
      • 2014-05-31
      • 1970-01-01
      • 2012-11-27
      • 2019-04-11
      • 2011-07-08
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2015-10-06
      相关资源
      最近更新 更多