Я пытаюсь объединить все упомянутое в заголовке с тем, что всегда чего-то не хватает. Я просмотрел все возможные сообщения, которые смог найти, но до сих пор не уверен, что делать.
Итак, у меня в основном две модели, которые являются главными деталями. Когда я использую простой django материал - все в порядке, но в детальной модели у меня более 10000 элементов, а поле выбора classi c использовать невозможно. Поэтому я переключился на select2 через модуль django -select2. Мне каким-то образом удалось собрать все вместе, но затем мне пришлось добавить django -dynami c -formset, чтобы иметь возможность динамически добавлять новые строки, если мне нужно более трех, которые по умолчанию рендерит django. Опять же, мне удалось заставить все работать, были некоторые проблемы, пока я собирал все вместе, но теперь у меня есть две проблемы.
Если я оставлю этот кусок кода в 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 создает три строки в подробной таблице (по дизайну), и я заполняю только первую, он сохраняет все три строки. Не уверен, как удалять строки при сохранении набора форм (пытался выполнить form.delete при выполнении POST, но это не сработало).
Конечно, я могу добавить больше кода, если это поможет.