def save(self, commit=True): test = super(TestAdminForm, self).save(False) file = self.cleaned_data['file'] questions_count = self.cleaned_data['questions_count'] if file: test_name = test.name test.save() AnswerResult.objects.filter(answer__question__test=test).delete() AnswerChoice.objects.filter(question__test=test).delete() TestPass.objects.filter(test=test).delete() Answer.objects.filter(question__test=test).delete() Question.objects.filter(test=test).delete() questions = parser(file) count = 0 cur_test = test for i, question in enumerate(questions): count += 1 q = Question(test=cur_test, question=question['question']) if question['text_answer']: q.text_answer = question['text_answer'] q.save() else: q.save() for answer in question['answers']: a = Answer(question=q) a.answer = answer['text'] a.correct = answer['correct'] a.save() if questions_count and count >= questions_count: if (len(questions) - i) >= questions_count: cur_test.name = '%s [%s-%s]' % (test_name, i+1-count, i+1) cur_test.save() cur_test = copy(test) cur_test.pk = None cur_test.save() else: cur_test.name = '%s [%s-%s]' % (test_name, i+1-count, len(questions)) cur_test.save() count = 0 return test