Попытка объединить Django inline-formset, django -select2 и django -dynami c -formset - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь объединить все упомянутое в заголовке с тем, что всегда чего-то не хватает. Я просмотрел все возможные сообщения, которые смог найти, но до сих пор не уверен, что делать.

Итак, у меня в основном две модели, которые являются главными деталями. Когда я использую простой 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, но это не сработало).

Конечно, я могу добавить больше кода, если это поможет.

1 Ответ

3 голосов
/ 30 мая 2020

Предполагая, что самая последняя версия jquery .formset. js из github, требуется исправление 'deleteButton HTML' на 'delButton HTML', которого пока нет в обычном репо https://github.com/Dowsley/django-dynamic-formset/commit/1a781fd6b1a7a5f6348b43097983773f0d2a69de

...