fix formsets?

This commit is contained in:
Ross
2021-01-18 16:18:07 +00:00
parent d3b42ad207
commit ee761afe83
3 changed files with 89 additions and 18 deletions
+26 -13
View File
@@ -16,7 +16,7 @@ from django.urls import reverse_lazy, reverse
from django.http import Http404, JsonResponse
from django.http import HttpResponseRedirect, HttpResponse
from .forms import RapidForm, ImageFormSet, NoteForm, RegionForm, AbnormalityForm, ExaminationForm
from .forms import RapidForm, ImageFormSet, NoteForm, RegionForm, AbnormalityForm, ExaminationForm, AnswerFormSet, AnswerUpdateFormSet
from .models import Rapid, Note, Abnormality, Region, Examination
from .tables import RapidTable
from .filters import RapidFilter
@@ -201,23 +201,28 @@ def rapid_clone(request, pk):
form = RapidForm(request.POST or None, instance=new_item)
formset = ImageFormSet()
image_formset = ImageFormSet()
answer_formset = AnswerFormSet()
if form.is_valid():
form.instance.author.add(request.user.id)
#logger.debug(formset.is_valid())
if formset.is_valid():
if image_formset.is_valid() and answer_formset.is_valid():
response = super().form_valid(form)
formset.instance = obj
formset.save()
image_formset.instance = obj
image_formset.save()
answer_formset.instance = obj
answer_formset.save()
return response
else:
return super().form_invalid(form)
context = {
"form": form,
"image_formset": formset
"image_formset": image_formset
"answer_formset": answer_formset
#other context
}
@@ -245,11 +250,14 @@ class RapidCreateBase(LoginRequiredMixin, CreateView):
form.instance.author.add(self.request.user.id)
context = self.get_context_data(form=form)
formset = context['image_formset']
if formset.is_valid():
image_formset = context['image_formset']
answer_formset = context['answer_formset']
if image_formset.is_valid() and answer_formset.is_valid():
response = super().form_valid(form)
formset.instance = self.object
formset.save()
image_formset.instance = self.object
image_formset.save()
answer_formset.instance = self.object
answer_formset.save()
# If the normal submit button is pressed we save as normal
if "submit" in self.request.POST:
return response
@@ -303,8 +311,10 @@ class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin,
self.request.FILES,
instance=self.object)
context['image_formset'].full_clean()
context['answer_formset'] = AnswerFormSet(instance=self.object)
else:
context['image_formset'] = ImageFormSet(instance=self.object)
context['answer_formset'] = AnswerFormSet(instance=self.object)
return context
def form_valid(self, form):
@@ -315,12 +325,15 @@ class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin,
form.instance.author.add(self.request.user.id)
context = self.get_context_data(form=form)
formset = context['image_formset']
image_formset = context['image_formset']
answer_formset = context['image_formset']
#logger.debug(formset.is_valid())
if formset.is_valid():
response = super().form_valid(form)
formset.instance = self.object
formset.save()
image_formset.instance = self.object
image_formset.save()
answer_formset.instance = self.object
answer_formset.save()
return response
else:
return super().form_invalid(form)