【发布时间】:2018-03-05 11:26:00
【问题描述】:
我使用简单的 django 形式
class MassPaymentForm(forms.ModelForm):
class Meta:
model = LeasePayment
fields = ['payment_type', 'is_deposit', 'amount', 'method', 'payment_date', 'description']
在我的模板上,我使用 AJAX 创建了几个链式下拉菜单
<form method="POST" class="form" action="" method="get">
<div class="form-group">
{% csrf_token %}
<br><br>
<b>Building:</b><br>
<select name="building" id="building" onchange="getunit();">
<option id="-1">Select building</option>
</select>
<br>
<b>Unit:</b><br>
<select name="unit" id="unit" onchange="getlease();">
<option id="-1">Select unit</option>
</select>
<br>
<b>Lease:</b><br>
<select name="lease" id="lease" onchange="getleaseterm()">
<option id="-1">Select lease</option>
</select>
<br>
<b>Term:</b><br>
<select name="leaseterm" id="leaseterm">
<option id="-1">Select lease term</option>
</select>
{{ form|crispy}}
{{ form.media }}
<BR><BR>
<button type="submit" class="btn btn-primary btn-primary">Save</button>
</div>
</form>
保存时我需要将“lease”和“leaseterm”作为表单的一部分,因为它们是模型中的必填字段。 如何将这些 AJAx 动态生成的下拉列表包含在我的 Django 表单中?
【问题讨论】:
-
只需将它们直接添加到您的表单中(如果它们不是您的模型的一部分,则不在
Meta中):unit = CharField()等...当您使用 @987654325 初始化表单时@data,这些字段将获取发布的值。然后,您可以在视图中使用form.cleaned_data['unit']将其保存在某处。 -
您还需要将表单字段显式添加到模板中,而不是使用
{{ form }}。或者,您可以添加自定义 CSS 属性,例如hide,以便不会呈现自动生成的 HTML 字段,因为您已经手动添加它们。
标签: jquery python ajax django forms