“Inline formset plus” — это пакет Django, расширяющий функциональность встроенных встроенных наборов форм Django. Он предоставляет дополнительные функции и удобства для работы со встроенными наборами форм в проектах Django.
Вот некоторые методы, обычно используемые со встроенным набором форм плюс, а также примеры кода:
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)
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
...
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 }}
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