我试图将标题中提到的所有内容与总是缺少的东西结合起来。我已经浏览了所有可能找到的帖子,但仍然不确定该怎么做。
所以我基本上有两个模型,它们是主从模型。当我使用普通的 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,但它不起作用)。
如果有帮助,我当然可以添加更多代码。