Проверьте форму и наборы форм с помощью Django

ChocoBomb спросил: 03 ноября 2018 в 08:25 в: python

Я пытаюсь настроить проверку формы в своем виде, и я хотел бы получить от вас помощь, потому что у меня небольшая проблема.

Это мой набор форм:

DocumentFormSet = inlineformset_factory(Publication, Document, form=DocumentForm, extra=1, max_num=4, can_delete=True)

Это мой код:

def get_context_data(self, **kwargs):
    context = super(PublicationCreateView, self).get_context_data(**kwargs)
    document_queryset = Document.objects.all()
    context['FormSets'] = DocumentFormSet(self.request.POST or None, self.request.FILES or None,
                                                  prefix='doc', queryset=document_queryset)
    return contextdef form_valid(self, form):
    try:
        context = self.get_context_data()
        formsets = context['FormSets']
        if form.is_valid():
            self.object = form.save(commit=False)
            if formsets.is_valid():
                formsets.instance = self.object
                formsets.save(commit=False)
                for element in formsets:
                    element.save(commit=False)
            self.object = form.save()
            formsets.save()
        return super(PublicationCreateView, self).form_valid(form)
     except IntegrityError:
         ...

Я прочитал некоторые вещи, особенно форму нужно сохранять перед формами в наборе форм, если между формой и формами в моем языке есть ForeignKey formset.

Проблема возникает, если у меня неправильное поле в моей форме. При сохранении первой формы создается объект только с первой формой, а не со связанной формой в моем наборе форм.

Это пример:

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

нужно переключаться между методами .save(commit=False) и .save().

Спасибо

0 ответов