2

我试图将标题中提到的所有内容与总是缺少的东西结合起来。我已经浏览了所有可能找到的帖子,但仍然不确定该怎么做。

所以我基本上有两个模型,它们是主从模型。当我使用普通的 django 东西时 - 一切都很好,但在详细模型中我有超过 10000 个元素,而经典的选择字段是不可能使用的。所以我通过 django-select2 模块切换到 select2 。我以某种方式设法将所有内容放在一起,但是如果我需要 django 默认呈现的三个以上,则必须添加 django-dynamic-formset 才能动态添加新行。再一次,我设法让一切正常工作,当我把所有东西放在一起时遇到了一些问题,但现在我有两个问题。

如果我将这种平静的代码留在 jquery.formset.js 中:

insertDeleteLink(row);

我会收到这条消息:

jquery.formset.js:67 Uncaught ReferenceError: deleteButtonHTML is not defined
    at insertDeleteLink (jquery.formset.js:67)
    at HTMLTableRowElement.<anonymous> (jquery.formset.js:146)
    at Function.each (jquery-2.2.4.min.js:2)
    at n.fn.init.each (jquery-2.2.4.min.js:2)
    at n.fn.init.$.fn.formset (jquery.formset.js:124)
    at HTMLDocument.<anonymous> (1:92)
    at i (jquery-2.2.4.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-2.2.4.min.js:2)
    at Function.ready (jquery-2.2.4.min.js:2)
    at HTMLDocument.J (jquery-2.2.4.min.js:2)

如果我删除它,则不会生成行的删除链接,即使我的模板中有

<td>{% if form.instance.id %}{{ form.DELETE }}{% endif %}</td> 

所以,我以半解决方案结束,我可以添加行,我可以填充它们,select2 最终按预期工作,但我不能删除行,不是在我创建新项目时,也不是在我删除旧项目时。

另一个问题是,如果 django 在明细表中创建三行(按设计)并且我只填充第一行,它会保存所有三行。不确定如何在保存表单集时删除行(尝试在执行 POST 时执行 form.delete,但它不起作用)。

如果有帮助,我当然可以添加更多代码。

4

1 回答 1

3

假设来自 github 的最新 jquery.formset.js,它需要修复 'deleteButtonHTML' 到 'delButtonHTML' 到目前为止不在常规回购 https://github.com/Dowsley/django-dynamic-formset/commit/1a781fd6b1a7a5f6348b43097983773f0d2a69de

于 2020-05-30T18:29:40.313 回答