[Django Select2在单击添加更多时不适用于表单集

问题描述 投票:1回答:1

我正在创建一个表单集,其中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方法,该方法附加了render_js_code函数

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

但是在最新版本中,我找不到render方法,甚至找不到render_js_code。什么是替换项,以及我们如何创建select2字段的副本。

我们在过去3周内一直在为此苦苦挣扎,团队/社区的任何帮助都将是巨大的。

django jquery-select2 formset django-select2
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.