首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么management_form列表的prefix-TOTAL_FORMS、prefix-INITIAL_FORMS、prefix-MIN_NUM_FORMS、prefix-MAX_NUM_FORMS是?

为什么management_form列表的prefix-TOTAL_FORMS、prefix-INITIAL_FORMS、prefix-MIN_NUM_FORMS、prefix-MAX_NUM_FORMS是?
EN

Stack Overflow用户
提问于 2019-11-12 01:10:40
回答 2查看 107关注 0票数 0

下面是从我的表单发送回视图的POST数据。这会导致验证错误“ManagementForm数据丢失或已被篡改”

代码语言:javascript
复制
<QueryDict:  {
    "csrfmiddlewaretoken": ["..."],
    "project_title": ["project test"],
    "project_number": ["543219876"],
    "project_status": ["Active"],
    "project_initiation_date": ["2019-10-10"],
    "project_alias": ["alias"],
    "project_description": ["description"],
    "estimated_total_cost": ["100"],
    "project_type": ["Capital"],
    "project_start_date": ["2019-09-16"],
    "project_end_date": ["2019-10-10"],
    "city_department": ["CDD"],
    "fundingsource_set-TOTAL_FORMS": ["2", ""],
    "fundingsource_set-INITIAL_FORMS": ["0", ""],
    "fundingsource_set-MIN_NUM_FORMS": ["0", ""],
    "fundingsource_set-MAX_NUM_FORMS": ["1000", ""],
    "fundingsource_set-0-funding_source_number": ["876543"],
    "fundingsource_set-0-funder": ["cve"],
    "fundingsource_set-0-funder_contact": ["scott"],
    "fundingsource_set-0-contract_number": ["876543"],
    "fundingsource_set-0-phone_0": ["123456789"],
    "fundingsource_set-0-phone_1": [""],
    "fundingsource_set-0-email": ["mar@gmail.com"],
    "fundingsource_set-0-funds_type": ["Loan"],
    "fundingsource_set-0-funding_amount": ["30"],
    "fundingsource_set-0-percentage_of_funding": ["30"],
    "fundingsource_set-0-funding_agency_type": ["Federal"],
    "fundingsource_set-0-is_awarded": ["on"],
    "fundingsource_set-0-is_being_leveraged": ["on"],
    "fundingsource_set-0-funding_doc_type": ["MOU"],
    "fundingsource_set-0-date_funding_doc_submitted": ["2019-10-10"],
    "fundingsource_set-0-date_project_budget_docs_submitted": ["2019-10-10"],
    "fundingsource_set-0-have_funding_reimbursement_requests": ["true"],
    "fundingsource_set-0-date_funding_reimbursement_request_docs_submitted": ["2019-10-10"],
    "fundingsource_set-1-funding_source_number": ["987123"],
    "fundingsource_set-1-funder": ["observian"],
    "fundingsource_set-1-funder_contact": ["aravind"],
    "fundingsource_set-1-contract_number": ["987123"],
    "fundingsource_set-1-phone_0": ["123456678"],
    "fundingsource_set-1-phone_1": [""],
    "fundingsource_set-1-email": ["mar@gmail.com"],
    "fundingsource_set-1-funds_type": ["Loan"],
    "fundingsource_set-1-funding_amount": ["33"],
    "fundingsource_set-1-percentage_of_funding": ["33"],
    "fundingsource_set-1-funding_agency_type": ["Federal"],
    "fundingsource_set-1-is_awarded": ["on"],
    "fundingsource_set-1-is_being_leveraged": ["on"],
    "fundingsource_set-1-funding_doc_type": ["MOU"],
    "fundingsource_set-1-date_funding_doc_submitted": ["2019-10-10"],
    "fundingsource_set-1-date_project_budget_docs_submitted": ["2019-10-10"],
    "fundingsource_set-1-have_funding_reimbursement_requests": ["true"],
    "fundingsource_set-1-date_funding_reimbursement_request_docs_submitted": ["2019-10-10"],
}
>

此窗体在内联窗体集中有父窗体的1个实例和子窗体的2个实例。

代码语言:javascript
复制
'fundingsource_set-TOTAL_FORMS': ['2', ''],
'fundingsource_set-INITIAL_FORMS': ['0', ''],
'fundingsource_set-MIN_NUM_FORMS': ['0', ''],
'fundingsource_set-MAX_NUM_FORMS': ['1000', '']

它们应该是列表吗?如果是这样的话,列表中的每一项都表示什么?

下面是我用来呈现这个表单集的模板片段

代码语言:javascript
复制
<fieldset class="form-group card card-body">
<h4>Funding Sources</h4>
    <div class="FundingSourceFormset card card-body">
        <h5>Funding Source</h5>
        {{ funding_source_form.management_form }}
        {{ funding_source_form.non_form_erros }}
        {% for form in funding_source_form %}
            <div class="row">
                <div class="col-md-4">
                    <p>{{ form.funding_source_number | as_crispy_field }}</p>
                </div>
                -----
                rendered all formset fields as crispy fields
                -----
            </div>
        {% enfor %}
    </div>
</fieldset>
<fieldset class="form-group">
    <button class="btn btn-outline-info" type="submit">Create Project</button>
</fieldset>
<script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
<script src="/media/jquery.formset.js"></script>
<script type="text/javascript">
    $('.FundingSourceFormset').formset({
        addCssClass: 'btn btn-primary btn-block',
        addText: 'Add additional funding source',
        deleteCssClass: 'btn',
        deleteText: 'Remove this Funding Source',
        prefix: '{{ funding_source_form.prefix }}'
    });
</script>

我是不是做错了?

EN

回答 2

Stack Overflow用户

发布于 2019-11-12 01:13:25

它不应该是一个列表。

该管理表单具有多个值,这意味着您可能还会多次POSTing它。

检查你的模板和/或渲染的超文本标记语言-我打赌你会发现多个TOTAL_FORMS,等等。

票数 1
EN

Stack Overflow用户

发布于 2019-11-12 03:37:31

问题出在@DanielRoseman在上面的评论中提到的management_form的立场。

根据django-dynamic-formset的文档,management_form应该在您传递给.formset()方法的DOM元素之外

新的模板片段如下所示

代码语言:javascript
复制
<fieldset class="form-group card card-body">
<h4>Funding Sources</h4>
    {{ funding_source_form.management_form }}
    {{ funding_source_form.non_form_erros }}
    <div class="FundingSourceFormset card card-body">
        <h5>Funding Source</h5>
        {% for form in funding_source_form %}
            <div class="row">
                <div class="col-md-4">
                    <p>{{ form.funding_source_number | as_crispy_field }}</p>
                </div>
                -----
                rendered all formset fields as crispy fields
                -----
            </div>
        {% enfor %}
    </div>
</fieldset>
<fieldset class="form-group">
    <button class="btn btn-outline-info" type="submit">Create Project</button>
</fieldset>
<script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
<script src="/media/jquery.formset.js"></script>
<script type="text/javascript">
    $('.FundingSourceFormset').formset({
        addCssClass: 'btn btn-primary btn-block',
        addText: 'Add additional funding source',
        deleteCssClass: 'btn',
        deleteText: 'Remove this Funding Source',
        prefix: '{{ funding_source_form.prefix }}'
    });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58805792

复制
相关文章

相似问题

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