【问题标题】:Jquery append value to Django choicefieldJquery 将值附加到 Django 选择字段
【发布时间】: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


【解决方案1】:

您的 CROP_CHOICES 是 tuple,它是不可变的。

尝试使用列表来代替:

CROP_CHOICES = [
    ('', 'Choose..'),
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2022-11-17
    • 2013-04-02
    • 2013-11-08
    相关资源
    最近更新 更多