【问题标题】:Django Select2 not working for formset when click on add more单击添加更多时,Django Select2 不适用于表单集
【发布时间】:2020-06-06 05:42:07
【问题描述】:

我正在创建一个表单集,其中 select2 字段中的一个字段,当我单击添加更多时,我正在克隆该行。正在克隆所有其他列,但未显示选择 2。

function newSelect2WidgetInFormset (cell, prefix) {
    var $cell = $(cell),
        $script = $cell.find("script"),
        $input = $cell.find("input[type=hidden][id^=id_]"),
        scriptText, newId, newScriptText;

    // Remove old container
    $cell.find(".select2-container").remove();
    **scriptText = $script.text();** --------------------- This script was coming blank and it could not generate the select2 field
    newId = $input.attr("id");
    console.log("Before", scriptText);

    newScriptText = scriptText.replace(/id_[\d\w\-]+/g, newId);
    $script.text(newScriptText);
    console.log("After", newScriptText);
    if (scriptText === newScriptText) {
        console.warn("New script and old have some code");
        console.warn("Should had been changed to ", newId);
    }

    // Script evaluation forced evaluation is needed because
    // inserting elements with script tag does not make the browser
    // to execute them
    eval(newScriptText);
    // swal("Script", newScriptText, "info");

}

注意:- 我们最近将 django_select2 从 4.2.2 更新到最新版本。 当我在代码内部检查时,Select2Mixin 具有附加 render_js_code 函数的渲染方法

s += self.render_js_code(id_, name, value, attrs, choices)

但在最新版本中,我找不到渲染方法,甚至找不到 render_js_code。它的替代品是什么,我们如何创建 select2 字段的克隆。

过去 3 周以来,我们一直在努力解决这个问题,团队/社区的任何帮助都会非常有用。

【问题讨论】:

    标签: django jquery-select2 formset django-select2


    【解决方案1】:

    你考虑过使用 django-dynamic-formset 吗?在我看来,您正在手动执行此操作,并且可能根本不需要它。我使用的与您所说的完全相同,但使用的是 django-dynamic-formset。请注意,您需要使用尚未提交的更新版本,否则您将无法获得删除按钮:

    https://github.com/Dowsley/django-dynamic-formset/commit/1a781fd6b1a7a5f6348b43097983773f0d2a69de

    【讨论】:

      猜你喜欢
      • 2016-06-26
      • 1970-01-01
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多