如何使用formset_factory编写更新视图

时间:2014-02-27 05:26:33

标签: django formset

我喜欢如何将实例传递给表单,并将其填充到页面上。我遇到的麻烦是formset_factory。我正在尝试使用query_set ...

def classroom_update(request, pk):

    classroom = get_object_or_404(Classroom, pk=pk)
    students = classroom.student_set.all()

    # Empty formset forms should be required
    class RequiredFormSet(BaseFormSet):
        def __init__(self, *args, **kwargs):
            super(RequiredFormSet, self).__init__(*args, **kwargs)
            for form in self.forms:
                form.empty_permitted = False

    #StudentFormSet = inlineformset_factory(Classroom, Student)
    StudentFormSet = formset_factory(StudentForm, max_num=100, formset=RequiredFormSet)

    if request.method == 'POST': # If the form has been submitted...

        classroom_form = ClassroomForm(request.POST)
        student_formset = StudentFormSet(request.POST, request.FILES)

        if classroom_form.is_valid() and student_formset.is_valid():
            classroom = classroom_form.save(commit=False)
            classroom.user = request.user
            classroom.save()
            for form in student_formset.forms:
                student = form.save(commit=False)
                student.classroom = classroom
                student.save()
            return HttpResponseRedirect('/') # Redirect to a 'success' page
    else:
        classroom_form = ClassroomForm(instance=classroom)
        student_formset = StudentFormSet(query_set=students)

    # For CSRF protection
    # See http://docs.djangoproject.com/en/dev/ref/contrib/csrf/ 
    c = {'classroom_form': classroom_form,
         'student_formset': student_formset,
        }
    c.update(csrf(request))

    return render_to_response('reports/modify_classroom.html', c)

编辑:这是错误消息......

formset_factory() got an unexpected keyword argument 'query_set'

显然我不知道如何使用query_set ...

0 个答案:

没有答案