Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Python 在django中更新表单后,它将创建表单的新实例,而不是更新表单_Python_Django - Fatal编程技术网

Python 在django中更新表单后,它将创建表单的新实例,而不是更新表单

Python 在django中更新表单后,它将创建表单的新实例,而不是更新表单,python,django,Python,Django,我无法更正代码,而且在每次更新后仅将问题插入数据库并不起作用,这意味着返回多个对象。这是查看代码 views.py #form for creating question def get_name(request): if request.method=='POST': form = QuestionForm(request.POST) if form.is_valid(): instance = form.save()

我无法更正代码,而且在每次更新后仅将问题插入数据库并不起作用,这意味着返回多个对象。这是查看代码

views.py

#form for creating question
def get_name(request): 
    if request.method=='POST':
        form = QuestionForm(request.POST)
        if form.is_valid():
            instance = form.save()
            return HttpResponseRedirect(reverse('poll:index'))
    else:
        form = QuestionForm()
    return render(request,'poll/name.html',{'form':form})

#for updating the form
def update(request,question_id=None): 
    instance=get_object_or_404(Question,pk=question_id)
    if request.method=='POST':
        form = QuestionForm(request.POST,instance=instance)
        if form.is_valid():
            instance=form.save(commit=False)
            instance.save()
            return HttpResponseRedirect(instance.get_absolute_url())
    else:
        form=QuestionForm(instance=instance)
    return render(request,'poll/name.html',{'form':form})

#urls.py

app_name='poll'

urlpatterns=[
                path('',views.index,name='index'),
                path('create/',views.get_name,name='create'),
                path('<int:question_id>/',views.detail,name='detail'),
                path('int:question_id/update',views.update,name='update'),
             ]       

views.py
#创建问题的表单
def get_名称(请求):
if request.method==“POST”:
表单=问题表单(request.POST)
如果form.is_有效():
instance=form.save()
返回HttpResponseRedirect(反向('poll:index'))
其他:
表单=问题表单()
返回呈现(请求,'poll/name.html',{'form':form})
#以更新表格
def更新(请求,问题编号=无):
实例=获取对象或404(问题,主键=问题id)
if request.method==“POST”:
表单=问题表单(request.POST,instance=instance)
如果form.is_有效():
instance=form.save(commit=False)
save()实例
返回HttpResponseRedirect(instance.get\u absolute\u url())
其他:
表单=问题表单(实例=实例)
返回呈现(请求,'poll/name.html',{'form':form})
#url.py
app_name='poll'
URL模式=[
路径(“”,views.index,name='index'),
路径('create/',views.get_name,name='create'),
路径(“/”,views.detail,name='detail'),
路径('int:question\u id/update',views.update,name='update'),
]       

检查此条件“if question\u id:”是否返回True。如果在没有question\u id(url.py)的情况下无法调用更新视图,则为最佳。然后只需使用
get\u object\u或
,这保证了如果没有404,您确实有一些东西需要更新。告诉我们调用
update()
视图的位置:url在哪里定义?它是在哪里构造的(在您的模板中)?另外,在视图定义中删除
=None
,这将确保始终向视图传递问题。检查此条件“if question\u id:”是否返回True。如果在没有问题id(url.py)的情况下无法调用更新视图,则最好是这样。然后只需使用
get\u object\u或
,这保证了如果没有404,您确实有一些东西需要更新。告诉我们调用
update()
视图的位置:url在哪里定义?它是在哪里构造的(在您的模板中)?同时删除视图定义中的
=None
,这将确保始终向视图传递问题。