Я получаю следующую ошибку, когда нажимаю кнопку «Сохранить» в своем встроенном наборе форм с использованием хрустящих форм:
[{'id': ['Это поле обязательно для заполнения.']}, {'Id ': [' Это поле обязательно для заполнения. ']}, {' Id ': [' Это поле обязательно для заполнения. ']}, {}, {}]
Набор форм связан, но недействителен из-за отсутствующий идентификатор, но я не уверен, как установить идентификатор.
#views.py
class View(LoginRequiredMixin, TemplateView):
template_name = "example.html"
MyFormSet = modelformset_factory(
model=MyModel,
form=MyModelForm,
formset=MyModelFormset,
can_delete=True,
extra=1,
fields=('field_1','field_2', ))
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
my_formset = self.MyFormSet()
context['my_formset'] = MyModel.objects.all().order_by('field_1')
return context
def post(self, request, *args, **kwargs):
my_formset = self.MyFormSet(request.POST, request.FILES)
if my_formset.is_valid():
try:
my_formset.save()
except:
messages.add_message(request, messages.ERROR, 'Cannot delete: this parent has a child 1 !')
else:
context = self.get_context_data()
context['my_formset'] = my_formset
return render(request, self.template_name, context)
return HttpResponseRedirect(reverse_lazy("example"))
#forms.py
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['field_1', 'field_2']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_tag = False
self.helper.layout = Layout(
Row(
Column('field_1'),
Column('field_2'),
Column('DELETE'),
)
)
#template
<form action="" enctype="multipart/form-data" method="post">{% csrf_token %}
{{ my_formset.management_form|crispy }}
{% for form in my_formset.forms %}
{% crispy form form.helper %}
{% endfor %}
<button class="btn btn-success" type="submit">Save</button>
</form>