2013-02-27 198 views
1

我已經設法使用modelformset_factory創建我需要的表單。如何使用django中的單個提交按鈕提交多個表單?

avaluos = Avaluo.objects.filter(Estatus__contains='CONCLUIDO',Factura__isnull=True) 
FacturaFormset = modelformset_factory(Avaluo,form=FacturaForm,extra=0) 

目前,這是生成以下HTML的每一行的發現:

<form id="id-FacturaForm" class="blueForms" method="post">[..]</form> 
<form id="id-FacturaForm" class="blueForms" method="post">[..]</form> 
<form id="id-FacturaForm" class="blueForms" method="post">[..]</form> 

我想用一個提交按鈕提交的所有形式。

任何想法?

UPDATE

我結束了使用django-crispy-forms這讓我GERATE輸入的每一行,然後我就手動添加表格並提交。

self.helper.form_tag = False 


{{example_formset.management_form }} 
     {% for a,b in olist %} 
{{ b.id }} 
<tr> 
    <td style="width:10px;"> {% crispy b %} </td> 
    <td> {{a.id}} </td>  
</tr> 
{% endfor %} 
+0

http://stackoverflow.com/questions/2374224/django-working-with-multiple-forms這可以幫助嗎? – GordonsBeard 2013-02-27 23:28:26

+1

具有相同ID的多個元素無效html一定會給您帶來麻煩。 – Musa 2013-02-27 23:29:35

回答

0

我懷疑你需要使用Ajax來完成它 - 否則只要一個表單被提交,你將無法走另一條路。

有幾個jQuery表單庫應該使它相對簡單。例如,http://malsup.com/jquery/form/

它看起來是這樣的:

$('#button-id').click(function() { 
    $('.blueForms').ajaxSubmit(); 
}); 

當然,你則需要處理的錯誤處理,並等待所有的形式提交。

0

如果您嘗試創建許多「相同」形式的實例(即它們看起來都是平等的),就好像它是屬於單個主元素的許多子元素中的一個,但實際上並不實際需要爲每個表單集創建一個表單標籤。

如果我沒有記錯的話,你要編輯很多facturas單個avaluo對象。我對嗎?該表示將是一個單獨的「avalu」格式,包含許多內聯表單,每個「factura」一個。

檢出inline formsets factory而不是modelformset工廠。

+0

對不起,我再次閱讀您的查詢,我想我可能會倒退關係... – Mariano 2013-02-27 23:45:43

+0

是的,我試圖編輯與每個_avaluo_匹配過濾器的_factura_字段。我最終使用了** modelformset_factory **和** django-cripy-forms **,而不是生成表單,我爲每一行創建了輸入,它像一個魅力一樣工作。謝謝! – 2013-03-01 01:18:05

9

閱讀更多model formsets。你不需要單獨的form標籤,這是使用formset的全部要點。

<form method="post" action=""> 
    {{ factura_formset.management_form }} 
    <table> 
     {% for form in factura_formset %} 
      {{ form }} 
     {% endfor %} 
    </table> 
</form> 

此外,每次使用id屬性不止一次在頁面上...開發商呼喊自己在世界的某個地方睡覺。

+7

對於'開發者來說,+1會讓自己在世界某個地方睡覺。「 – Clayton 2014-03-10 12:30:21