【问题标题】:Adding inline formsets without javascript在没有 javascript 的情况下添加内联表单集
【发布时间】:2013-08-29 15:56:36
【问题描述】:

我用这篇文章作为参考:Django: Adding inline formset rows without javascript

if request.method=='POST':
  PrimaryFunctionFormSet = inlineformset_factory(Position,Function)
  if 'add' in request.POST:
    cp = request.POST.copy()
    cp['prim-TOTAL_FORMS'] = int(cp['prim-TOTAL_FORMS'])+ 1
    prims = PrimaryFunctionFormSet(cp,prefix='prim')

我正在尝试在没有 javascript 的情况下添加内联行,但在上面引用的实现中遇到了一些我不理解的事情。

  1. 如何在表单、视图或模板中获得一个名为“添加”的按钮?
  2. “prims”在表单中定义,但“prim-TOTAL_FORMS”未定义。您需要在某处定义“prim-TOTAL_FORMS”吗?
  3. 如何在定义“prim”之前调用“prim-TOTAL_FORMS”?
  4. 这一切都写在 views.py 中了吗?

感谢您的帮助,如果问题是新手,请见谅!

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    a) 添加一个带有您希望的名称和值的按钮,它将作为 POST 数据提交,POST 中的键是名称,值是值。

    <input type="submit" value="true" name="add">
    

    阅读 Django here 中的 HTTPRequest 对象。

    b) 否。该示例使用 inlineformset_factory。这会使用给定的前缀“prim”在 POST 上为您设置 TOTAL_FORMS 值。他们正在获取当前 TOTAL_FORMS 计数的副本,然后加 1,然后返回一个新的表单集。

    c) prim 在初始表单集中定义,并且您确保返回具有相同前缀的新表单。这段代码是如果表单提交了,所以你知道'prim'已经被设置为前缀。

    d) 是的!

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多