Ошибка ключа в Django в форме с префиксом - PullRequest
1 голос
/ 26 июня 2011

Я использую две формы на одной странице (у меня есть свои причины).Они не являются модельными формами.Я пытаюсь проверить их с помощью префикса.Я нашел это здесь: Правильный способ обработки нескольких форм на одной странице в Django Но когда я пытаюсь получить cleaned_data, я получаю ключевую ошибку.Вот мой код:

add_form = AbsenceTypeForm(request.POST, prefix = 'atype')
if add_form.is_valid():
    absence_type = AbsenceType(
        client = client_instance,
        name = add_form.cleaned_data['type_name'],
        gainful = add_form.cleaned_data['gainful'],
    )
    absence_type.save()

И я получаю KeyError для type_name.Я пытался добавить cleaned_data['atype-type_name'] - ничего не помогает.

Ответы [ 2 ]

1 голос
/ 26 июня 2011

А как насчет того, чтобы вывести куда-нибудь cleaned_data на экран или в файл - просто чтобы проверить, какие ключи он получает? Отладчик также должен показывать словарь местным жителям. Я предполагаю, что это либо префикс утерян / неправильно написан, либо имя поля формы.

Между прочим, я согласен, что использование .get () безопаснее (даже несмотря на то, что is_valid () уже должен обрабатывать проверку формы, однако вы можете в будущем изменить это поле на необязательное, а затем этот код будет ошибкой), поэтому:

name = add_form.cleaned_data.get('type_name',None),
gainful = add_form.cleaned_data.get('gainful',None),

if name and gainful:
    pass
    #rest of the code
0 голосов
/ 26 июня 2011

Возможно, вы оставили type_name пустым в опубликованной форме; cleaned_data содержит только ключи для непустых полей формы.

...