2010-01-29 3 views
1

я получаю исключение при добавлении формы к сессии:вставка формы на сессию повышает PicklingError - Джанго

PicklingError: Can't pickle <class 'django.utils.functional.__proxy__'>: attribute lookup django.utils.functional.__proxy__ failed

Форма включает в себя несколько простых полей и имеют некоторое JavaScript прикрепленное к виджету. Возможно, Django-формы не могут быть маринованными, но исключение, похоже, указывает на ленивый перевод unicode.

Чтобы проверить далее, я также попытался вставить только ошибки формы (errordict) в сеанс и получил ту же ошибку.

Я ценю некоторую помощь здесь, спасибо заранее.

EDIT: Вот почему я вставить форму в сессии:

У меня есть приложение, которое имеет форму. Эта форма отображается тегом шаблона в другом приложении. Когда опубликовано, если форма действительна, нет проблем, я делаю материал и перенаправляюсь на «следующий». Однако, если это неверно, я хочу вернуться на страницу публикации, чтобы показать ошибки. Напомним, что приложение комментариев в этом случае перенаправляет на промежуточную страницу «Эй, пожалуйста, исправьте ошибки». Я стараюсь избегать этого и, следовательно, перенаправлять обратно на страницу публикации с формой и ее ошибками в сеансе, которые будет отображаться тегом шаблона.

ответ

2
  • Вам не нужно разводить форму. Если вы хотите сохранить значение формы в сеансе, храните form.cleaned_data

  • Основываясь на том, что вы сказали, вы делаете, вы можете проверить номер django form wizard. Он рассортирует данные и сохраняет их в следующих формах как скрытые значения, после заполнения вы получаете поля всех форм.

+0

Я дал некоторую информацию о том, почему я помещаю форму в сеанс. См. Редактирование. – shanyu

+0

ему нужно рассохнуть, когда форма недействительна, поэтому учетная запись cleaned_data будет актуальной. Я предполагаю, что пользователь хочет, чтобы ошибки формы были найдены в одном представлении, переданном формам в другом. Другими словами, чтобы поддерживать шаблон POST-перенаправления, а также иметь доступ к проверке форм, а не нарушать DRY. –

0

Я не знаю, как полезно это будет, но есть explanation этого типа ошибки в JSON сериализаторе

0

если проверка не удается поставить request.POST в ваших сессиях и перенаправить пользователь как обычно. другой вид просто должен собрать это и инициализировать формы с недопустимыми данными, и ошибки, обнаруженные в вашем представлении POST, снова появятся в перенаправленном представлении.

Смежные вопросы