这是我的代码:
要创建新的问题对象,请使用表单
def raise_issue_view(request, *args, **kwargs):
form = RaiseIssueForm(request.POST or None)
if form.is_valid():
form.save()
obj = RaiseIssueModel.objects.latest('id')
return redirect("/raise_issue/" + str(obj.id))
context = {
"form" : form
}
return render(request,"raise_issue.html", context)
要编辑先前创建的问题,请通过链接127 ... 8000 / edit_issue / <issue_id>
def edit_issue_view(request, id):
obj = RaiseIssueModel.objects.get(id=id)
form = RaiseIssueForm(instance=obj)
new_form = RaiseIssueForm(request.POST, instance=obj)
if new_form.is_valid():
new_form.save()
return redirect("/raise_issue/" + str(obj.id))
context = {
"form" : form
}
return render(request,"raise_issue.html", context)
在这里,在“编辑问题”视图中,首先将数据库数据加载到“表单”中,然后创建一个新表单(new_form)以保存更新的数据。这样可以吗,或者有更好的方法吗?谢谢,
这有效,但不正确...经过验证的表单是new_form。如果无效,则将显示来自表单的错误(由于尚未提交,因此没有任何错误)。
您也无法检查对象是否存在。
def edit_issue_view(request, id):
try:
obj = RaiseIssueModel.objects.get(id=id)
except RaiseIssueModel.DoesNotExist:
raise Http404()
form = RaiseIssueForm(request.POST or None, instance=obj)
if form.is_valid():
form.save()
return redirect("/raise_issue/" + str(obj.id))
context = {
"form" : form
}
return render(request,"raise_issue.html", context)
然后,为您的第一个表格。表单的save()方法应返回创建的对象(假设您使用了django.forms.ModelForm)。所以你可以这样写:
def raise_issue_view(request, *args, **kwargs):
form = RaiseIssueForm(request.POST or None)
if form.is_valid():
obj = form.save()
return redirect("/raise_issue/" + str(obj.id))
context = {
"form" : form
}
return render(request,"raise_issue.html", context)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句