【发布时间】:2017-06-12 20:57:52
【问题描述】:
我有一个如下所示的表单:
CROP_CHOICES = (
('', 'Choose..'),
)
class CropMonitoringPlantHeightForm(forms.Form):
Crop = forms.ChoiceField(choices = CROP_CHOICES, widget = forms.Select(attrs = {
'readonly': 'True',
'class': 'form-control seleckpicker'
}))
plot = forms.ModelChoiceField(queryset = Plot.objects.all(), widget = Select(attrs = {
'disabled': 'True',
'class': 'form-control seleckpicker'
}), empty_label = "Choose Plot")
所以我想要的是当用户在“template.html”上选择绘图时,然后将与该绘图相关的作物名称附加到作物选择字段;
因此我这样做了:
var options = '<option value="">Choose crop..</option>';
crops = plotmanagement_info[1];
for (var i = 0; i < crops.length; i++) {
options += '<option value="' + crops[i] + '">' + crops[i] + '</option>';
}
$("#id_Crop").html(options);
$("#id_Crop option:selected").attr('selected', 'selected');
值被附加到作物选择字段;
问题: 当我尝试提交表单时,我收到以下错误消息:
选择一个有效的选项。 XXX 不是可用的选项之一。
如何使用查询将值附加到 Django 选择域...?
提前致谢
【问题讨论】:
-
问题在于,在 Django 端,
choices被填充而没有您添加的选择,当它验证时,它发现您的选择不是其中之一。我认为您可以在某个地方(即在特定字段的 clean 方法中)覆盖它,以便您将该选择添加到列表中,或者不验证它是否在先前指定的列表中。 -
documentation 说:“请注意,选择可以是任何可迭代的对象——不一定是列表或元组。这使您可以动态地构建选择。但是如果您发现自己将选择修改为动态的,最好使用带有 ForeignKey 的适当数据库表。选择适用于不会发生太大变化的静态数据,如果有的话。”
-
我该怎么做@makavel?我如何在 django 模板上使用 jquery 追加选择
-
你不能在 jQuery 中这样做,但你可以在视图级别的表单中发布数据后这样做。
-
好吧;我能够通过将选择字段更改为模型选择字段来解决问题...因此:Crop = forms.ModelChoiceField(queryset = Crop.objects.all(),widget=Select(attrs={'class': 'form-control seleckpicker'}),empty_label="Choose Crop..")
标签: javascript jquery python django