Наборы форм¶
inlineformset_factory¶
-
django.forms.models.
inlineformset_factory
(**kwargs)¶ Фабрика набора форм для дочерних моделей модели
parent_model - родительская модель
model - дочерняя модель, по которой формируется набор форм
form - класс формы, которая будет использоватся для ввода данных. По умолчанию
django.forms.models.ModelForm
formset - =BaseInlineFormSet,
fk_name - =None,
fields - список полей модели, которые будут в одной форме
exclude - список полей модели, которые не будут в одной форме
extra - максимальное количество выводимых пустых форм для создания новых записей, по умолчанию 3
can_order - булево, пользователь может сортировать записи
can_delete - булево, пользователь может удалить записи
max_num - максимальное количество форм в наборе, по умолчанию 1000
formfield_callback - =None,
widgets - =None,
validate_max - булево, количество форм в наборе не должно быть больше max_num
localized_fields - =None,
labels - словарь, полей форм, с надписями
help_texts - словарь, полей форм, с дополнительным текстом
error_messages - словарь, полей форм с текстом сообщений
min_num - =None,
validate_min - =False
# formset.py from django.forms.models import inlineformset_factory from .models import SomeModel, ParentModel SomeFormSet = inlineformset_factory(ParentModel, SomeModel)
# views.py def some_view(request): instance = ParentModel.objects.get() formset = SomeFormSet(instance=instance) if formset.is_valid(): formset.save()
modelformset_factory¶
-
django.forms.models.
modelformset_factory
(**kwargs)¶ Фабрика набора форм для модели
model - модель, по которой формируется набор форм
form - класс формы, которая будет использоватся для ввода данных. По умолчанию
django.forms.models.ModelForm
formfield_callback - =None,
formset - =BaseModelFormSet,
extra - максимальное количество выводимых пустых форм для создания новых записей, по умолчанию 1
can_delete - булево, пользователь может удалить записи
can_order - булево, пользователь может сортировать записи
max_num - максимальное количество форм в наборе, по умолчанию 1000
fields - список полей модели, которые будут в одной форме
exclude - список полей модели, которые не будут в одной форме
widgets - =None,
validate_max - булево, количество форм в наборе не должно быть больше max_num
localized_fields - =None,
labels - словарь, полей форм, с надписями
help_texts - словарь, полей форм, с дополнительным текстом
error_messages - словарь, полей форм с текстом сообщений
min_num - =None,
validate_min - =False
# formset.py from django.forms.models import modelformset_factory from .models import SomeModel SomeFormSet = modelformset_factory(SomeModel) formset = SomeFormSet(queryset=SomeModel.objects.all())
# views.py def some_view(request): formset = SomeFormSet(request.POST, request.FILES) if formset.is_valid(): formset.save()
<form> {{ formset.as_p }} {{ formset.can_order }} {{ formset.can_delete }} </form>
<form> {{ formset.management_form }} {% for form in formset %} {{ form.as_p }} {{ form.ORDER }} {{ form.DELETE }} {% endfor %} </form>