2011-06-22 78 views
0

我試圖獲得在一個formset各種形式的cleaned_data,使用正常的迭代(就像Django文檔中顯示的):Django的表單集迭代出問題

MyFormSet = formset_factory(form=MyForm, formset=MyBaseFormSet) 
my_form_set = MyFormSet(request.POST or None, initial = my_data, prefix = 'myform') 

在那之後,我和驗證試圖通過各種形式進行迭代並打印值是這樣的:

for f in my_form_set.forms: 
    print(f.cleaned_data) 

但我得到的結果somekind的是這樣的:

<QueryDict: {"myform-0-field_a" : "this is a", "myform-1-field_a" : "this is second a"}> 
<QueryDict: {"myform-0-field_a" : "this is a", "myform-1-field_a" : "this is second a"}> 

我期望獲得單個的鍵和值對,但是對於每次迭代,我都會得到POST數據的全部內容。

我期待這樣的事情:

迭代0:

"field_a" : "this is a" 

迭代1:

"field_a" : "this is second a" 

我在哪裏錯過?

感謝

+0

那的確是你應該得到的東西。我認爲你需要發佈表單和formset類,以及完整的視圖。 –

回答

2

標籤每個表單字段都必須是唯一的,否則就沒有辦法告訴從 形成什麼樣的數據來了。 「myform-0-field_a」,「myform-1-field_a」是鍵/標籤 瀏覽器將您在一篇文章中的所有字段發送給您。

因爲f.cleaned數據接縫是一個子類字典這可能會工作

for k, v in f.cleaned_data.items(): 
     print k.split('-')[-1], v 

https://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects

+0

謝謝。但似乎是一樣的。每次迭代它顯示整個事情(形式1數據和形式2數據):(。 – djangouser