我想在Django模板中构建一个动态表单。为什么我的Django窗体显示选择不可用错误?
我有两个下拉选择。当用户在第一个选项中选择一个选项时,第二个下拉列表中的可用选项会动态变化。以下是我用来更改第二个下拉元素中的选项的jQuery代码。
$(document).on("change", "[id^=id_form][id$=brand]", function() {
var $value = $(this).val();
var $id_prefix = $(this).attr('id').slice(0, -5);
$auto_type = $("#" + $id_prefix + "auto_type");
$.ajax({
type: 'GET',
url: '/europarts/filter/auto/type/with/brand/' + String($value),
success: function(data) {
$auto_type.html(data);
}
});
});
你可以看到,它获取一些HTML从一个链接,基本上是一帮其将取代目前的那些选项。下面是代码:
{% for auto_type in auto_types %}
<option value="{{ auto_type.id }}">{{ auto_type.name }}</option>
{% endfor %}
这里是我的形式:
class ListForm(forms.ModelForm):
class Meta:
model = List
fields = ['ref_no']
class ProductCreateForm(forms.Form):
brand = forms.ModelChoiceField(queryset=Brand.objects.all(), initial=Brand.objects.first())
auto_type = forms.ModelChoiceField(queryset=AutoType.objects.filter(brand=Brand.objects.first()), empty_label=None)
part_no = forms.CharField(max_length=50)
description = forms.CharField(max_length=255)
quantity = forms.IntegerField()
unit = forms.CharField(max_length=20, initial='piece(s)')
cost_price = forms.IntegerField(required=False)
selling_price = forms.IntegerField(required=False)
我使用的是动态表单集jQuery库保存多个产品具有一个列表。
这工作很好,直到现在!
但是我改变这样的选项,并尝试提交表单后,表单页面被再次在第二个下拉,上面写着默认选项并没有改变那些与错误一起加载:
Select a valid choice. That choice is not one of the available choices.
下面是提交表单时的request.POST
值。
<QueryDict: {'form-MAX_NUM_FORMS': ['1000'], 'form-1-description': ['lskdjf'], 'form-1-auto_type': ['3'], 'form-MIN_NUM_FORMS': ['0'], 'form-0-quantity': ['1'], 'form-0-brand': ['2'], 'form-0-part_no': ['293847'], 'form-0-auto_type': ['2'], 'form-0-unit': ['piece(s)'], 'form-0-description': ['slkdfj'], 'form-1-part_no': ['928374'], 'form-TOTAL_FORMS': ['2'], 'form-1-quantity': ['1'], 'form-INITIAL_FORMS': ['0'], 'ref_no': ['REF230498203948'], 'csrfmiddlewaretoken': ['WYN08Hi2YhwTSKPS8EnLaz94aOz33RVfFMjwYeHr3rMxBImxn7ggSLYHwguIbuL0'], 'form-1-brand': ['2'], 'form-1-unit': ['pieces']}>
你可以看到'form-1-auto_type': ['3']
这是'form-1-auto_type': ['1']
原本。表单在原始值存在时提交,但在动态更改值后显示上述错误。
第二个下拉菜单显示此错误。我怎样才能解决这个问题?
是否要填写第二个选项中的选择或提交 – Cadmus
您能否显示表单的代码? – albar
@SnakeFcz选择。也许我的问题并不清楚。我设法动态更改第二个下拉列表的选项。但我无法提交表单,它会在动态更改时显示错误。 – MiniGunnR