2011-03-16 36 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 %} 

这个工作对我来说,有可能是更有效的方法。我很乐意了解它。