Динамически удалять встроенные формы в Django - PullRequest
8 голосов
/ 01 марта 2010

Возможно ли, чтобы Django автоматически удалял наборы форм, которых нет в запросе?

Так, например, если у меня было три встроенных набора форм, представленных в HTML, когда я загружал свою страницу редактирования, и я использую javascript, чтобы удалить два из них, когда запрос обрабатывается, Django видит, что эти две формы больше не являются их, и удаляет их.

1 Ответ

8 голосов
/ 01 марта 2010

Да, это возможно, используя несколько различных методов.

Сначала нужно скопировать способ, которым это делается в приложении администратора Django, которое должно иметь флажок с меткой, похожей на «Удалить?». Затем, когда вы обрабатываете formset позже в запросе POST, вы проверяете, установлен ли флажок True, и если да, то удаляете запись. Это, вероятно, не то, что вы ищете, так как вы использовали слово «динамически» в заголовке вашего вопроса:)

Таким образом, второй, динамический метод заключается в использовании Javascript для «скрытия» удаленной записи на странице и установки флажка удаления в True. Затем вы обрабатываете форму так же, как и первый вариант выше. См. django-dynamic-formset для кода для удаления formset таким способом.

Третий, динамичный способ - использовать Ajax, и при нажатии кнопки удаления JS вызывает представление удаления, чтобы удалить запись, а также удалить набор форм из HTML. Я не могу указать вам ни один пример кода для этого, но я думаю, что второй способ выше лучше в любом случае, потому что вы можете хранить все свои коды проверки подлинности и проверки стандартной формы в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...