2011-03-16 57 views
0
{% for form in formset.forms %} 
    <div class="elements"> 
      {{form.as_ul}} 
    </div> 
    <input type="image" value="ADD" id="add_more"> 
{% endfor %} 

這裏就是我在JS添加形式從服務器端

$('#add_more').click(function(){ 
     if($('.app-form').valid()){ 
     cloneMore('div.ul:last','prefix'); 
    } 
}); 

,剩下的就是相同的參考this reference我想,當用戶進入了「顯示形式ADD「。當添加按下時,它會轉到視圖以及使用jQuery打印另一個表單。 的意見。

def start(request): 
     qd = request.POST 
     ffact = formset_factory(ModelForm,extra=int(qd['prefix-TOTAL_FORMS'])) 
     fset = ffact(qd,prefix='prefix') 
     if fset.is_valid(): 
      return render_to_response('test.html',{'formset':fset}) 
     else: 
      return render_to_response('test.html',{'formset':fset}) 

但jQuery是導致另一種形式,即使提交的表單是無效的,而視圖從而爲所有的表單字段是無效的錯誤消息。 我如何使點擊行動等待或以某種方式與views.py驗證結果 溝通,然後才顯示額外的表單?欣賞它。

+0

你有任何代碼(HTML,JS)開始? – mattsven 2011-03-16 20:53:50

+0

我沒有更新與該信息的問題。感謝您的時間。 – stackover 2011-03-16 21:29:43

回答

0

這可以通過兩種方式完成:無論是從用戶端還是從後端,但我的問題沒有辦法[我找到一個]爲此目的綁定jQuery/Django。 我試圖做在服務器端的整個事情: 在views.py:

query_dict = request.POST 
tot = int(querydict['prefix-TOTAL_FORMS']) 
    ffact = formset_factory(ModelForm,extra=tot) 
    fset = ffact(query_dict,prefix='prefix') 
    if fset.is_valid(): 
     ffact = formset_factory(ModelForm,extra=1) 
     fset = ffact(initial=fset.cleaned_data,prefix='prefix') 
     return render_to_response('test.html',{'formset':fset,}) 
中的test.html

{% for form in fset.forms%} 
    {{form.as_ul}} or anything that works for you 
{% endfor %} 

這個工作對我來說,有可能是更有效的方法。我很樂意瞭解它。