javascript - django cms 插件上的动态模型选择字段

标签 javascript ajax django python-2.7 django-cms

我目前正在开发一个 django cms 插件,其模型选择字段依赖于表单中的另一个字段。我现在通过 ajax 所做的是,当选择触发字段时,依赖模型选择字段将通过 ajax 更新,以更改选择字段中的选择。但是,在提交表单时,我遇到了此错误

“选择一个有效的选项。这不是可用的选择之一。”

我对堆栈溢出做了一些挖掘,发现了类似的问题

While using ajax with django form, getting error "Select a valid choice. That is not one of the available choices."

根据上面的链接,我应该以插件本身的形式更新模型选择字段,具体取决于我将从 request.POST 获取的触发字段的值

我该如何为 django cms 插件执行此操作?我应该覆盖 cms 插件的哪个方法?我假设它是插件的 CMSPluginBase 类中的一个方法,但我不确定要重写什么方法,以及如何获取插件使用的当前表单,以便我可以在上述方法中重写它?

谢谢

最佳答案

经过一番挖掘,我能够通过覆盖表单的 is_valid() 过程中设置的字段查询来做到这一点,如下所示

def is_valid(self):
    self.fields["my_field"].queryset=Foo.objects.filter(bar=baz)
    return super(MyForm, self).is_valid() 

这样,当表单的验证运行时,该字段已经被覆盖

关于javascript - django cms 插件上的动态模型选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42380977/

相关文章:

Javascript |创建一个在页面关闭前触发的弹出窗口

javascript - 延迟后的 jQuery slideUp

javascript - jQuery:$.getJSON 在 Chrome/IE 上对数据进行排序?

django 在渲染表单时转义小部件

javascript - 输入选项列表

javascript - 使用 Rails 4 将用户选择的国家/地区存储在 cookie 中

jquery - CakePHP 3 - 允许用户分配和更改记录查询的顺序

javascript - 不显眼地提交 Ajax 表单两次

python - 使用反向关系第一行的列注释 Django 查询集

django - 如何将自定义控件添加到 django 管理站点?