如何使用django-select2在客户端添加(和选择)新选项?

时间:2017-11-10 16:01:53

标签: django-forms jquery-select2

我有一个使用django-select2库的可选字段。我目前正在尝试复制Django管理表单中“添加另一个”功能的行为。

我在常规表单模板中添加了一个“+”图标并打开了一个弹出窗口,以便用户可以注册一个新项目。这部分有效,现在我想在弹出窗口关闭后自动选择新添加的项目。我似乎无法为可选项添加新选项。

我阅读了原始的dismissAddAnotherPopup()代码和select2文档,但是在元素中附加new Option(...)并没有达到预期的效果 - 实际上它添加了尽可能多的选项我想要,但它们出现在选择框下面而不是下拉菜单中,好像它们完全不同。

我查看了html结果,似乎select2字段没有使用<option ...>来表示使用Django呈现的选项,而是使用了更深层次的嵌套元素。

在这种情况下添加新选项的正确语法是什么?

2 个答案:

答案 0 :(得分:0)

为我解决的问题是this answer

new Option(...)

仅仅替换html看起来有点难看,但正如我在问题中提到的那样,在元素中添加var fileUrl: URL = URL(fileURLWithPath: NSTemporaryDirectory()) fileUrl.appendPathComponent("foo") fileUrl.appendPathExtension("bar") 不起作用。

答案 1 :(得分:0)

不完全是客户端,但可能会有所帮助:您可以使用 django-addanother 包装器,例如:

widgets = {
    'somefield': AddAnotherWidgetWrapper(Select2Widget, reverse_lazy('somefield_add')),
}

这将在 Select2 字段旁边呈现一个“+”;当按下弹出窗口时,将打开允许添加新对象。保存后,Select2Widget 将自动填充这个新创建的对象。