Can';不要在django中的ModelFormSetView中保存对象

Can';不要在django中的ModelFormSetView中保存对象,django,django-forms,django-class-based-views,formset,Django,Django Forms,Django Class Based Views,Formset,我正在使用django extra视图中的ModelFormSetView,但无法保存ModelFormSet所基于的模型的对象 class StudentEnrolInClassView(SuccessMessageMixin, ModelFormSetView): model = StudentApplication ... def formset_valid(self, formset): for student_application in

我正在使用django extra视图中的ModelFormSetView,但无法保存ModelFormSet所基于的模型的对象

class StudentEnrolInClassView(SuccessMessageMixin, ModelFormSetView):
     model = StudentApplication
     ...

     def formset_valid(self, formset):
        for student_application in formset.cleaned_data:
            if student_application['school_class']:
                appl = student_application['id']
                student = Student()
                ...
                student.save()
                enrolment = Enrolment(student=student, school_class=student_application['school_class'])
                enrolment.save()
                appl.approved = datetime.datetime.now()
                appl.student = student
                appl.save()  # THIS ISN'T SAVING!
        return super(StudentEnrolInClassView, self).formset_valid(formset)
新创建的学生和注册对象正确保存,但预先存在(和更新)的appl不会保存,但不会引发任何错误或警告。我已尝试使用以下方法从DB获取它的新实例:

appl = StudentApplication.objects.get(id=student_application['id'].id)
但这没有任何效果


知道发生了什么吗?

最终,我发现问题出在最后对super formset_valid()函数的调用中。ModelFormSetView中的formset_valid()保存formset的对象。在这种情况下,由于原始对象仅用于查看(而不是编辑),因此它会保存原始对象,在保存“我的视图”中修改过的对象后,原始对象未被修改。因此,上面的代码正确地保存了这些对象,只是在不久之后,我们用原始对象过度编写了这些对象。这个问题通过更换电池解决了

return super(StudentEnrolInClassView, self).formset_valid(formset)

return HttpResponseRedirect(self.get_success_url())