Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何使用formset_factory编写更新视图_Django_Formset - Fatal编程技术网

Django 如何使用formset_factory编写更新视图

Django 如何使用formset_factory编写更新视图,django,formset,Django,Formset,我喜欢将实例传递给表单并将其填充到页面上的方式。我遇到的麻烦是formset_工厂。我正在尝试使用查询集 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 RequiredFo

我喜欢将实例传递给表单并将其填充到页面上的方式。我遇到的麻烦是formset_工厂。我正在尝试使用查询集

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\u factory()得到一个意外的关键字参数“query\u set”


显然,我不知道如何使用查询集…

这些错误是什么?请尝试以下与query\u set
StudentFormSet=inlineformset\u工厂(教室,学生)
如何将StudentForm合并到此中有关的错误?@fragles,我发布了错误消息。
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)