Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 未能将表单的数据保存到不同的模型_Django_Python 3.x - Fatal编程技术网

Django 未能将表单的数据保存到不同的模型

Django 未能将表单的数据保存到不同的模型,django,python-3.x,Django,Python 3.x,我是django的新手,我有以下代码片段。我在这里试图做的是获取一些表单字段的值,将其与字符串进行比较,如果找到匹配项,则将该值保存在不同的模型中 def log_name_insert(request): if 'logged_in' in request.session: if request.session['logged_in'] is True: form = LogEntryForm(request.POST or None)

我是django的新手,我有以下代码片段。我在这里试图做的是获取一些表单字段的值,将其与字符串进行比较,如果找到匹配项,则将该值保存在不同的模型中

def log_name_insert(request):
    if 'logged_in' in request.session:
        if request.session['logged_in'] is True:
            form = LogEntryForm(request.POST or None)
            phaseform = PhaseNameForm(request.POST or None)
            testForm = TestTypeForm(request.POST or None)
            priorityForm = PriorityNameForm(request.POST or None)
            frequencyForm = FrequencyNameForm(request.POST or None)
            statusForm = StatusNameForm(request.POST or None)
            defectSeverityForm = DefectSeverityNameForm(request.POST or None)
            causeCategoryForm = CauseCategoryNameForm(request.POST or None)
            leakagePhaseForm = LeakagePhaseNameForm(request.POST or None)
            testStatusForm = TestStatusNameForm(request.POST or None)
            # print(form)
            if form.is_valid() and phaseform.is_valid() and testForm.is_valid() and priorityForm.is_valid() and frequencyForm.is_valid() and defectSeverityForm.is_valid() and causeCategoryForm.is_valid() and leakagePhaseForm.is_valid() and testStatusForm.is_valid() and statusForm.is_valid():
                if LogEntry.objects.filter(log_name_add=request.POST['log_name_add']).exists():
                    print("entry found")
                else:
                    form.save()
                    print(form.cleaned_data['log_name'])
                    if form.cleaned_data['log_name'] == "Phase":
                        print(form.cleaned_data['log_name'])
                        obj = PhaseList()
                        phaseform.cleaned_data['phase_name'] = form.cleaned_data['log_name_add']
                        obj.phase_name = phaseform.cleaned_data['phase_name']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Test Type":
                        obj = TestTypeList()
                        testForm.cleaned_data['test_type'] = form.cleaned_data['log_name_add']
                        obj.test_type = testForm.cleaned_data['test_type']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Priority":
                        obj = PriorityList()
                        priorityForm.cleaned_data['priority_name'] = form.cleaned_data['log_name_add']
                        obj.priority_name = priorityForm.cleaned_data['priority_name']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Frequency":
                        obj = FrequencyList()
                        frequencyForm.cleaned_data['frequency_name'] = form.cleaned_data['log_name_add']
                        obj.frequency_name = frequencyForm.cleaned_data['frequency_name']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Status":
                        obj = StatusList()
                        statusForm.cleaned_data['status_name'] = form.cleaned_data['log_name_add']
                        obj.status_name = statusForm.cleaned_data['status_name']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Defect Severity":
                        obj = DefectSeverityList()
                        defectSeverityForm.cleaned_data['defect_severity_name'] = form.cleaned_data['log_name_add']
                        obj.defect_severity_name = defectSeverityForm.cleaned_data['defect_severity_name']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Cauese Category":
                        obj = CauseCategoryList()
                        causeCategoryForm.cleaned_data['cause_category_name'] = form.cleaned_data['log_name_add']
                        obj.cause_category_name = causeCategoryForm.cleaned_data['cause_category_name']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Leakage Phase":
                        obj = LeakagePhaseList()
                        leakagePhaseForm.cleaned_data['leakage_phase_name'] = form.cleaned_data['log_name_add']
                        obj.leakage_phase_name = leakagePhaseForm.cleaned_data['leakage_phase_name']
                        obj.save()
                    if form.cleaned_data['log_name'] == "Test Status":
                        obj = TestStatusList()
                        testStatusForm.cleaned_data['test_status_name'] = form.cleaned_data['log_name_add']
                        obj.test_status_name = testStatusForm.cleaned_data['test_status_name']
                        obj.save()
                    messages.success(request, 'Data Saved')
                    return redirect('defectlog:log_name_list')
            else:
                messages.error(request, 'Wrong data in form')
                return redirect('defectlog:log_name_insert')
        else:
            return redirect('defectlog:login')

现在,每当我尝试执行它时,我的页面都会因为重定向太多而停止加载。是因为我试图一次验证太多表单吗?另外,我认为我比较这些值的方式是错误的。如果我在这里做错了什么,请帮助我。谢谢。

在第一次执行视图时,您将使用GET请求加载它。因此,您创建的所有表单的第一个参数都是None,因此表单是未绑定的,下面的测试

if form.is_valid() and phaseform.is_valid() and [...]:
这是错误的。然后进入else分支:

messages.error(request, 'Wrong data in form')
return redirect('defectlog:log_name_insert')
因此,您将向浏览器返回HTTP重定向响应。您的浏览器按照此重定向到同一视图,并重新执行相同的代码,一次又一次地落入相同的重定向。但您的Internet浏览器会检测到这种情况并快速停止无限循环。这就是为什么会出现太多重定向错误