Как изменить способ сохранения формы встроенного администратора Django?

Posted by

Как переопределить сохранение формы Django admin Inline?

Как переопределить сохранение формы Django admin Inline?

Если вы работаете с Django admin и используете inline формы, возможно вам понадобится переопределить сохранение формы для выполнения дополнительных действий. В этой статье мы расскажем вам, как это сделать.

Шаг 1: Создание класса для переопределения

Для того чтобы переопределить сохранение формы inline, вам нужно создать новый класс и унаследовать его от нужного вам inline класса. Затем определить метод save_formset.


class CustomInline(admin.TabularInline):
model = YourModel
# other inline properties

def save_formset(self, request, form, formset, change):
# your custom logic here
super().save_formset(request, form, formset, change)

Шаг 2: Подключение к админке

После того как вы создали класс для переопределения сохранения формы, вам нужно подключить его к админке. Для этого вам потребуется создать новый класс админки и использовать метод InlineModelAdmin.


class YourModelAdmin(admin.ModelAdmin):
inlines = [CustomInline]
# other admin properties

Шаг 3: Дополнительные действия

Теперь вы можете определить нужные вам дополнительные действия в методе save_formset вашего переопределенного класса. Например, вы можете добавить логирование или выполнить какие-то действия перед или после сохранения формы.

Заключение

Теперь вы знаете, как переопределить сохранение формы в Django admin Inline. Следуя этим шагам, вы сможете добавить нужные вам дополнительные действия при сохранении формы inline.

0 0 votes
Article Rating
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@user-ng6nx1uo5u
9 months ago

Коллеги, не подскажите такой момент.
Есть 2 модели:
1.Документ "Приходная накладная" с полями Номер, Дата. (не важно)
2. Строка документа – с полями товар, количество, сумма.
Сделал Форму, сделал вьюху, сделал шаблон. Но проблема в том, что количество строк фиксировано. Не могу придумать, как сделать кнопку "Добавить строку" и "Удалить строку", чтобы по нажатию добавлялись новые строки в документ. Думал с помощью JS, но оказалось, что он не хочет добавлять строку с элементом шаблонизатора {{ form_str }}, выдает ошибку.
Пока писал вопрос, пришла идея сделать добавление строк так же, как добавляли комментарии в наши посты. Попробую так.

@PetrushkinAleksandr
9 months ago

Миха куда пропал! Хотим стримы

@user-vl1el8bp7y
9 months ago

Михаил – спасибо вам за ваш труд!