我有一個編輯對象視圖,其中包含一個formset(一個或多個,如果這很重要),現在我想創建一個頁面,可以顯示多個編輯對象的形式,並提交一個單一的形式。Django嵌套窗體集
什麼是實現此任務的正確方法?
我有一個編輯對象視圖,其中包含一個formset(一個或多個,如果這很重要),現在我想創建一個頁面,可以顯示多個編輯對象的形式,並提交一個單一的形式。Django嵌套窗體集
什麼是實現此任務的正確方法?
我找到了解決方案。
我可以在編輯頁面上枚舉我的對象,並根據這些索引爲formset使用不同的前綴。這裏有一個例子:
首先,你需要枚舉,我實現它使用相同的輸入(複選框)的名稱與增量值:
<input type="checkbox" name="counter" value="0">
...
<input type="checkbox" name="counter" value="1">
...
計數器號被該formset和其他數據的序列號:
<!--Ordinary inputs-->
<input type="text" name="data0" value="value0">
<input type="text" name="data1" value="value1">
<!--Formsets-->
<input type="text" id="test0-0-data" name="test0-0-data" value="something">
<input type="text" id="test0-1-data" name="test0-1-data" value="something">
<input type="hidden" name="test0-TOTAL_FORMS" id="id_test0-TOTAL_FORMS" value="2">
<input type="hidden" name="test0-INITIAL_FORMS" id="id_test0-INITIAL_FORMS" value="0">
<input type="text" id="test1-0-data" name="test1-0-data" value="something">
<input type="hidden" name="test1-TOTAL_FORMS" id="id_test1-TOTAL_FORMS" value="1">
<input type="hidden" name="test1-INITIAL_FORMS" id="id_test1-INITIAL_FORMS" value="0">
然後,如果你的代碼填入這樣的表單集:
counter = request.POST.getlist('counter')
for i in counter:
TestFormset = modelformset_factory(Test, form=TestForm)
test_formset = TestFormset(request.POST, prefix='test'+i, queryset=Test.objects.none())
我ACHI上面用JavaScript描述了HTML結構。
http://yergler.net/blog/2009/09/27/nested-formsets-with-django/ – 2010-06-05 19:40:38
謝謝你,我看過這篇文章,但看起來它不是我的情況 – dragoon 2010-06-05 20:38:36