【问题标题】:Can't post form, customized with ajax无法发布表单,使用 ajax 自定义
【发布时间】:2016-05-01 17:28:40
【问题描述】:

我制作了一个带有一些选择的 Django 表单,这些选择相互依赖(用户在第一次选择(等级)中选择选项,并在第二次选择(主题)中根据其值获取一些值):

class AddTaskForm(forms.ModelForm):
    grade = forms.ModelChoiceField(queryset=Grade.objects.all())
    subject = forms.ModelChoiceField(queryset=Subject.objects.none())
    topic = forms.CharField(widget=forms.Textarea)
    ...

我正在通过 ajax-request 获取主题值,并使用这样的主题动态更改选择(抱歉,我是 JS 新手,不知道如何正确操作):

$.each(data, function(key, value){
                    $('select[name=subject]').append('<option value="' +
                                                      key + '">' + value +'</option>');
                    });

但是当我点击“提交”按钮时,我收到这条消息,属于选择,我动态改变了:

Select a valid choice. That choice is not one of the available choices.

我检查了 html 代码,它完全一样,应该是标准格式。 我做错了什么以及如何以第二种形式动态获取值?

【问题讨论】:

  • 所以您正在加载选项,但是否选择了任何选项?您的 js 所做的只是呈现选项列表,而不是实际选择其中一个选项。
  • @CurtisOlson 是的,当然,即使我在页面上选择了一些选项,也会出现消息,我只附加了部分代码,附加了新选项,因为其余代码在问题中并不重要(如我认为)
  • 好的,key 在您的 js 中返回的内容是什么 - 我假设每个键都是您返回的 Subject 实例的 pk?
  • @CurtisOlson 是的,你是对的

标签: jquery python ajax django


【解决方案1】:

您必须从服务器发送所有主题值,然后 ajax 请求可以为您缩小选项范围。

【讨论】:

  • 接近正确答案 - 已更改下拉列表中的选定选项必须在 queryset,我刚刚解决了我的问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 2013-01-06
相关资源
最近更新 更多