【问题标题】:Django - How to get the prefix for each form in formsetDjango - 如何获取表单集中每个表单的前缀
【发布时间】:2014-03-13 11:39:58
【问题描述】:

在具有多个表单的表单集中,每个表单都有一个唯一的 id,例如“MyForm-0_form”,而 MyForm 是公共前缀,0 是迭代的表单索引。

假设模板看起来像这样

template.py:

<form action="" method="POST>
{% for form in formset %}
{{form}
{% endfor %}
</form>

提交表单后,我想执行以下操作:

view.py:

[...]
if request.method == "POST":
  if formset.isValid():
    for form in formset:
      print form.currentFormID #here i get stuck. What I would like to yield: MyForm-0

【问题讨论】:

  • 您想要这个是因为您使用了两种不同的模型?也许这就是你要找的东西:stackoverflow.com/questions/6003984/…
  • 我想这样做是因为我只想使用 formset 中的一种形式。不幸的是,我无法使用 form_hasChanged(),因为我将许多数据注入到表单中,这几乎会预先更改所有数据。不过,我只需要其中一个。

标签: django django-forms


【解决方案1】:

在表单实例中使用前缀参数。

form1 = FormFirst(request.POST, prefix='form1') 
form2 = FormSecond(request.POST, prefix='form2')

使用前缀的好处是不需要手动重命名字段

【讨论】:

  • 谢谢,这对于视图中的多个不同表单是正确的。但问题是在表单集中找到给定子表单的前缀。 sha256 正确回答了这个问题。
【解决方案2】:

试试这个:

if request.method == "POST":
    if formset.is_valid():
        for form in formset:
            print form.prefix

【讨论】:

  • 谢谢!我想知道为什么我在官方网站上没有找到这样的属性。
猜你喜欢
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 2013-04-07
  • 2011-01-15
  • 2019-03-20
  • 2016-05-29
  • 2013-04-03
  • 2022-09-25
相关资源
最近更新 更多