Я пытаюсь настроить проверку формы в своем виде, и я хотел бы получить от вас помощь, потому что у меня небольшая проблема.
Это мой набор форм:
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 context
def 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.
Проблема возникаетесли у меня неправильное поле в моей форме.Когда первая форма сохраняется, она создает объект только с первой формой, а не со связанной формой в моем наборе форм.
Это пример:
Как вы можете видеть, это сохраняет мою первую форму, но я не хочу, пока все формы не будут действительными.
Мне нужно переключаться между .save(commit=False)
и .save()
методы.
Спасибо