2015-03-24 3 views
0

У меня есть модель, которую я хочу сохранить в модели.Django: [данные u'ManagementForm отсутствуют или были подделаны ']

В моих шаблонах, следующие работы прекрасно (это означает, что форма сохраняет в базе данных, когда я ударил представить):

{{ formset.management_form }} 
{{ formset }} 

Даже это прекрасно работает:

{{ formset.management_form }} 
{% for row in formset %} 
    {{ row }} 
{% endfor %} 

Но как только Я хочу, чтобы стиль моего formset (в таблице) следующим образом:

{{ formset.management_form }} 
{% for row in formset %} 
    {{ row.field1 }} 
    {{ row.field2 }} 
    {{ row.field3 }} 
{% endfor %} 

Я получаю [данные u'ManagementForm отсутствуют или был подделан '].

Поля от 1 до 3 соответствуют точно модели, которую я хочу сохранить. Я действительно не могу понять это!

Мой отслеживающий показывает это:

GET No GET data 
POST Variable    Value 
     form-0-field1   u'3' 
     form-0-field2   u'3' 
     form-0-field3   u'3' 

которые являются те же значения, которые я использовал в первых двух примерах (и которые правильно сохранены).

ответ

0

Ваш рендеринг формы не включает в себя дополнительные данные, которые необходимы для ManagementForm (form-TOTAL_FORMS, form-INITIAL_FORMS и form-MAX_NUM_FORMS)

См: https://docs.djangoproject.com/en/1.7/topics/forms/formsets/#understanding-the-managementform

+0

Спасибо за ответ @Railslide. Я не уверен, почему это будет работать в первых двух примерах, но не для третьего? Я также тестировал, исключая последний {{row.field3}}, и он работает, за исключением того, что требуется поле3. – wernerfeuer

+0

В последнем примере вы визуализируете мои конкретные поля формы и, поскольку вы, вероятно, не добавляете лишние данные нигде, формат не проходит проверку. В двух других примерах вы делегируете django задачу визуализации набора форм и одной строки/формы, поэтому он заботится о добавлении дополнительных данных за кулисами. – Railslide

+0

Имеет смысл и большое спасибо @ Railslide! – wernerfeuer

1

я, наконец, нашел ответ (в документации) это точно объясняет этот вопрос именно так, как я задал свой вопрос. Третий вариант должен визуализировать {{row.id}}, иначе Django создаст ошибку проверки. Пользователь должен использовать отображение «style =»: none; »в встроенном html, но оно должно быть обработано ..

Вот ссылка: https://docs.djangoproject.com/en/1.7/topics/forms/modelforms/#using-the-formset-in-the-template

Протестировано и работает!