def form_valid(self, form): Questions = form.instance.QuestionSet.Questions.all() request = self.request.POST form.clean() for question in Questions: if request.__contains__(str( question.pk)) and request.get(str(question.pk)) != '': if Answer.objects.filter(Question=question.pk, Survey=form.instance.pk).exists(): newAnswear = Answer.objects.get(Question=question.pk, Survey=form.instance.pk) newAnswear.Options.clear() else: newAnswear = Answer(Question=question, Survey=form.instance) newAnswear.save() if question.InputType.pk == settings.TEXT_ID: newAnswear.Text = request.get(str(question.pk)) if question.InputType.pk == settings.NUMERIC_ID: newAnswear.Numeric = request.get(str(question.pk)) if question.InputType.pk == settings.BOOL_ID: newAnswear.Bool = bool(int(request.get(str(question.pk)))) if question.InputType.pk == settings.OPTIONS_ID: for option in request.getlist(str(question.pk)): selectedOption = GetOption(option) newAnswear.Options.add(selectedOption) newAnswear.save() else: if Answer.objects.filter(Question=question.pk, Survey=form.instance.pk).exists(): Answer.objects.filter(Question=question.pk, Survey=form.instance.pk).delete() return super(FillSurvey, self).form_valid(form)