Изучение Inline Formset Plus в Django: методы и примеры кода

“Inline formset plus” — это пакет Django, расширяющий функциональность встроенных встроенных наборов форм Django. Он предоставляет дополнительные функции и удобства для работы со встроенными наборами форм в проектах Django.

Вот некоторые методы, обычно используемые со встроенным набором форм плюс, а также примеры кода:

  1. InlineFormSetFactory: этот метод используется для создания встроенной фабрики наборов форм для конкретной модели и формы. Он позволяет вам определять поведение набора форм и настраивать поля и виджеты набора форм.
from django.forms import inlineformset_factory
# Assuming you have two models: Parent and Child
from myapp.models import Parent, Child
from myapp.forms import ChildForm
ChildFormSet = inlineformset_factory(Parent, Child, form=ChildForm, extra=1)
  1. formset: этот атрибут доступен в родительском объекте и содержит встроенные экземпляры набора форм для каждого связанного дочернего объекта. Он позволяет получать доступ к отдельным наборам форм и перебирать их.
from myapp.models import Parent
parent = Parent.objects.get(id=1)
formsets = parent.formset  # Get the inline formset instances
for formset in formsets:
    # Do something with each formset
    ...
  1. empty_form: этот атрибут доступен в экземпляре встроенного набора форм и содержит пустую форму, которую можно использовать для отображения дополнительных пустых форм в шаблоне.
child_formset = ChildFormSet(instance=parent)
empty_form = child_formset.empty_form  # Get the empty form
# Render the empty form in the template
{{ empty_form.as_table }}
  1. can_delete: этот атрибут доступен в экземпляре встроенного набора форм и определяет, можно ли пометить формы в наборе форм для удаления. Установка для can_deleteзначения Trueдобавляет флажок в каждую форму, который позволяет пользователям удалять связанные дочерние объекты.
child_formset = ChildFormSet(instance=parent, can_delete=True)
# Render the formset with delete checkboxes in the template
{{ child_formset.management_form }}
{% for form in child_formset %}
    {{ form }}
    {{ form.DELETE }}
{% endfor %}

<ол старт="5">

  • save: этот метод используется для сохранения данных набора форм в базе данных. Он обрабатывает создание, обновление и удаление дочерних объектов на основе данных набора форм.
  • child_formset = ChildFormSet(request.POST, instance=parent)
    if child_formset.is_valid():
        child_formset.save()  # Save the formset data