首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证表单集

验证表单集
EN

Stack Overflow用户
提问于 2014-03-11 14:57:40
回答 2查看 249关注 0票数 0

我得到了这个错误:ValidationError at /screen-many/ [u'ManagementForm data is missing or has been tampered with'],我认为这是由于我视图中的以下代码所致……

代码语言:javascript
复制
# e_pk_list is a list of id's that I got from POST
e_students = Student.objects.filter(pk__in=e_pk_list)
my_iterator = iter(e_students) # Each list item will correspond to a form.
SurveyFormset = formset_factory(SurveyForm, extra=len(e_students))

# Is this the tampering that I can't do??
SurveyFormset.form = staticmethod(curry(SurveyForm, item_iterator=my_iterator))

if request.method == 'POST':

    survey_formset = SurveyFormset(request.POST)

    if survey_formset.is_valid():
        for form in survey_formset:
            saved = form.save(commit=False)
            saved.surveyset = ss
            saved.save()
        return HttpResponseRedirect('/')
else:
    survey_formset = SurveyFormset()

谢谢

编辑:我想我应该提到我的模板中已经有了一个管理表单……

代码语言:javascript
复制
    <form action="" method="POST">{% csrf_token %}
        {{ survey_formset.management_form }}
        {% for form in survey_formset %}
            <div class="item">
              {% crispy form %}
            </div>
        {% endfor %}
        <input type="submit" value="Submit" class='button' />
    </form>
EN

回答 2

Stack Overflow用户

发布于 2014-03-11 15:12:17

看起来你没有把management_form放到你的表单中。

将此代码放入显示SurveyFormset的html表单中

代码语言:javascript
复制
{{ SurveyFormset.management_form }}
票数 1
EN

Stack Overflow用户

发布于 2014-03-11 19:54:49

一个表单集有很多种形式。Django使用management form data跟踪表单集中的表单数量。你也应该在模板中添加management_form,它应该与其他POST数据一起发布。

所以,你应该有:

代码语言:javascript
复制
<form method="POST" action=".">
    {{survey_formset.management_form}}
    {% comment %}Other form fields{% endcomment %}
</form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22318537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档