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
,这将确保始终向视图传递问题。