在没有javascript的情况下添加内联表单集

时间:2013-08-29 15:56:36

标签: django django-forms

我使用这篇文章作为参考: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中的所有写法吗?
  5. 感谢您的帮助,如果问题是新手,请抱歉!

1 个答案:

答案 0 :(得分:1)

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

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

阅读Django here中的HTTPRequest对象。

b)否。该示例使用inlineformset_factory。这将使用给定的前缀'prim'为POST设置TOTAL_FORMS值。他们正在获取当前TOTAL_FORMS计数的副本,并添加1,然后返回新的formset。

c)prim在初始formset中定义,您确保返回具有相同前缀的新表单。此代码是表单的提交,因此您知道'prim'已设置为前缀。

d)是的!