2013-03-05 56 views
1

我有兩種形式Django的頁面:另外作爲一個formsetDjango的 - 刷新一個形式,但不清除其他

class FooForm(forms.Form): 
    number = forms.CharField(
     label = "Number", 
    ) 
    num_forms = forms.CharField(
     label = "Num Forms" 
    ) 
... 

class BarForm(forms.Form): 
    name = forms.CharField(
     label = "Name", 
    ) 
... 

一個是顯示爲一個單一的形式,並且:

def myview(request): 
     ... 
     num_forms = request.GET['num_forms']) 
     formsetFactory = formset_factory(BarForm, extra = num_forms) 
     formset = formsetFactory() 
     return render(request, 'template.html', {'form': FooForm(user), 'formset':formset, 'num_forms':num_forms) 

我使用django-crispy-forms設置佈局和template.html,這使得它們像這樣:

<form action="{% url myview %}" class="form-horizontal" method="post"> 
     {% crispy form %} 
     {% if num_forms and num_forms > 0 %} 
      {% crispy formset formset.form.helper %} 
     {% endif %} 
</form> 

我希望的行爲:form中的一個字段指定要顯示的formset中的表單數量,因此在該字段的更新中,formset將以顯示的許多表單重新加載。 form中的其他字段數據不應被清除或修改。驗證可以運行,但我希望能夠控制何時發生。

有人可以指導我如何實現我的視圖和/或模板,使其工作?謝謝!

回答

0

你可以通過回FooForm上響應渲染重裝值:

form = FooForm(request.POST) 
... 
return render(request, 'template.html', {'form': form}) 

不知道如何回傳沒有確認(或返回前清除驗證),雖然

相關問題