Ошибка пропуска данных в ManagementForm при проверке формы - PullRequest
3 голосов
/ 03 марта 2011

создание набора форм в views.py:

ffact = formset_factory(Form,extra=somenum]))
fset = ffact(prefix='pfix')

проверка в views.py:

ffact = formset_factory(Form,extra=3))
fset = ffact(request.POST) 
if fset_is.valid():
    blah blah

это приводит к типу исключения: ValidationError в / app / index / Значение исключения: [u'ManagementForm данные отсутствуют или были подделаны с помощью '] django-docs упомянул об этом. Я не уверен, как предоставить данные управления. Я пробовал что-то вроде это ,

try:
  fset = ffact(request.POST)
except ValidationError:
  fset = None
if fset and fset.is_valid():
  blah blah

Но все же я получаю ту же ошибку. Есть идеи? Спасибо.

Ответы [ 2 ]

8 голосов
/ 03 марта 2011

рендеринг formset.management_form в шаблоне

{{fset.management_form}}

это позволяет получить доступ к данным формы управления и, следовательно, к полным данным. Но если префикс добавляется при генерации наборов форм

добавление префикса должно решить эту проблему.

fset = ffact(request.POST,prefix='pfix')
8 голосов
/ 03 марта 2011

Данные управления находятся в request.POST? http://docs.djangoproject.com/en/dev/topics/forms/formsets/#understanding-the-managementform

Следующая информация должна быть в request.POST:

data = {
    'form-TOTAL_FORMS': u'1',
    'form-INITIAL_FORMS': u'0',
    'form-MAX_NUM_FORMS': u'',
}

Существует ярлык для рендеринга скрытых полей: {{ my_formset.management_form }}

...