Джанго Формсет Итерация пошла не так - PullRequest
0 голосов
/ 22 июня 2011

Я пытаюсь получить cleaned_data для каждой формы в наборе форм, используя обычную итерацию (как показано в документации 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)

Но результат, который я получаю, примерно такой:

<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"

Куда мне скучать?

Спасибо

1 Ответ

2 голосов
/ 22 июня 2011

Метки каждого поля формы должны быть уникальными, в противном случае невозможно определить, из какой формы какие данные пришли.«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

...