Django:在没有javascript的情况下添加内联formset行

时间:2010-03-15 17:06:29

标签: python django django-models django-forms django-views

这篇文章与此有关: Add row to inlines dynamically in django admin

有没有办法在不使用javascript的情况下添加内联表单集?显然,会涉及页面刷新。

所以,如果表单有一个名为'add'的按钮......

我想我可以这样做:

if request.method=='POST':
  if 'add' in request.POST:
    PrimaryFunctionFormSet = inlineformset_factory(Position,Function,extra=1)
    prims = PrimaryFunctionFormSet(request.POST)

我认为每次添加1,然后使用发布数据填充表单。但是,似乎extra = 1不会为帖子数据添加1。

1 个答案:

答案 0 :(得分:5)

知道了。

有时这是最简单的解决方案。只需复制request.POST数据并修改TOTAL-FORMS。

例如..

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')

然后正常吐出表格。保留您的数据,添加内联编辑器。