【发布时间】:2019-11-11 17:10:39
【问题描述】:
下面是从我的表单发送回视图的 POST 数据。这会导致验证错误 ['ManagementForm 数据丢失或已被篡改']
<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"],
}
>
此表单在 Inline formset 中有 1 个父表单实例和 2 个子表单实例。
'fundingsource_set-TOTAL_FORMS': ['2', ''],
'fundingsource_set-INITIAL_FORMS': ['0', ''],
'fundingsource_set-MIN_NUM_FORMS': ['0', ''],
'fundingsource_set-MAX_NUM_FORMS': ['1000', '']
它们应该是列表吗?如果有,列表中的每一项表示什么?
下面是我用来渲染这个表单集的模板 sn-p
<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>
我做错了吗??
【问题讨论】:
-
显示模板。
-
我刚刚在摘要中添加了模板sn-p
-
根据 django-dynamic-formset 的文档,
management_form应该在您传递给.formset()方法的 DOM 元素之外。 -
工作就像一个魅力!非常感谢!
标签: django python-3.x inline-formset