我試圖製作一個表單,該表單有一次添加多個對象的選項。我希望它有一個「添加另一個」按鈕 - 單擊時會出現一個新的表單域用於添加其他對象。如果以前沒有提交過輸入,我希望表單保留它。是否有可能爲此使用模板標籤(即django模板標籤而不是javascript)?如果需要,將字段添加到表單中django
0
A
回答
1
您的表單必須基於從POST傳遞給它的一些變量(或者盲目檢查屬性)來構造。每次重新載入視圖時都會構造表單本身,因此HTML需要包含有關構建正確數量的字段以進行驗證的字段數的信息。
我會看看這個問題的方式FormSet
的工作:有一個隱藏的字段,其中包含活動表格的數量,並且每個表格名稱都以表格索引作爲前綴。實際上,您可以創建一個字段FormSet
。
https://docs.djangoproject.com/en/dev/topics/forms/formsets/#formsets
這裏有一個從頭開始做 - 它應該給你一些想法。這也解答了您關於傳遞參數給__init__
問題 - 你只是傳遞參數給對象的構造函數:MyForm('arg1', 'arg2', kwarg1='keyword arg')
###瀏覽
類MyForm的(forms.Form): original_field = forms.CharField( ) extra_field_count = forms.CharField(插件= forms.HiddenInput())
def __init__(self, *args, **kwargs):
extra_fields = kwargs.pop('extra', 0)
super(MyForm, self).__init__(*args, **kwargs)
self.fields['extra_field_count'].initial = extra_fields
for index in range(int(extra_fields)):
# generate extra fields in the number specified via extra_fields
self.fields['extra_field_{index}'.format(index=index)] = \
forms.CharField()
DEF MyView的(請求): 如果request.method == 'POST': 形式= MyForm的(request.POST,額外= request.POST.get( 'extra_field_count') 如果form.is_valid(): 「有效的」 打印 其他: 形式= MyForm的() 返回渲染(請求, 「模板」,{ '形式':形式})
### HTML
form_count = Number($("[name=extra_field_count]").val());
// get extra form count so we know what index to use for the next item.
$("#add-another").click(function() {
form_count ++;
element = $('<input type="text"/>');
element.attr('name', 'extra_field_' + form_count);
$("#forms").append(element);
// build element and append it to our forms container
$("[name=extra_field_count]").val(form_count);
// increment form count so our view knows to populate
// that many fields for validation
})
<form>
<div id="forms">
{{ form.as_p }}
</div>
<button id="add-another">add another</button>
<input type="submit" />
</form>
相關問題
- 1. Django - 將表單添加到django admin中的字段集?
- 2. 添加類到表單字段Django ModelForm
- 3. jqgrid:添加表單所需字段,但編輯表單不需要字段?
- 4. 如何使用裝飾器將字段添加到Django表單
- 5. django - 如何將ForeignKey的ForeignKey(3級)字段添加到表單
- 6. 將字段添加到django中的模型表單
- 7. 將屬性添加到django中的某個表單字段
- 8. nodejs表單模塊:如何將字段添加到字段中
- 9. 賬單字段不需要添加
- 10. 如何將字段添加到django中的`auth_user_groups`表中?
- 11. 將隱藏字段添加到表單
- 12. 我需要將文本字段中的值添加到android
- 13. 如何將data-role =「something」添加到我的django表單字段中?
- 14. 將`help_text`添加到Django Admin字段
- 15. 將自定義字段添加到Django中的auth_user表中
- 16. 如何添加額外的字段到Django註冊表單?
- 17. Django |如何表單字段添加到URL配置
- 18. 如何將類添加到表單的所有字段中?
- 19. Prestashop:如何將字段添加到訂單摘要頁面
- 20. 如何在表單字段中添加新值表單字段
- 21. 將對象ID添加到Django表單中的字段名稱中
- 22. 需要將文字添加到矩形
- 23. 將HTML表單鏈接到Django字段
- 24. Django - 在表單中需要get_FOO_display作爲外國字段
- 25. 如何將css添加到Django ModelForm中的特定字段中
- 26. 如何將子字段添加到Django中的ModelForm中?
- 27. 如何將外鍵字段添加到Django中的ModelForm中?
- 28. 需要將LF添加到數千個MySQL MEDIUMTEXT字段
- 29. 需要將選擇的字段添加到MsgBox jquery
- 30. 將表單字段添加到整個表單集
謝謝,它澄清了很多。 – McCzajnik