我正在尝试使用HTML表单更新数据库的值
当我单击编辑时,它会将我带到编辑上面的值的窗口
但是,当我单击submit按钮时,它返回一个数据库,但没有其他值
是否有人可以帮助我理解我做错了什么,并为我指出正确的文档(如果有)
editclaims.html:
<div class="arrange2">
<h1>Edit Claim Form - #{{claims.id}} </h1>
</div>
<form method="POST" action="/update/{{claims.id}}">
{% csrf_token %}
views.py:
def editclaims(request,id):
context = initialize_context(request)
user = context['user']
claims = SaveClaimForm.objects.get(id=id)
if request.method == 'POST':
name = request.POST['name']
email = request.POST['email']
claim = request.POST['claim']
claimtype = request.POST.get('claimtype')
description = request.POST['description']
receipt = request.FILES['receipt']
cheque = request.POST.get('Cheque')
form = SaveClaimForm(name=name, email=email, claim=claim, claimtype=claimtype, description=description, receipt=receipt, cheque=cheque)
form.save()
return render(request, "Login/editclaims.html", {'claims':claims, 'user':user})
URL.py:
urlpatterns = [
path('existingclaims/', views.viewclaims, name='existingclaims'),
path('editclaims/<int:id>', views.editclaims, name='editclaims'),
path('update/<int:id>', views.updateclaims, name='updateclaims'),
]
它可能不能解决你们所有的问题,但作为答案,它会更具可读性
当您从HTML获取数据时,您将创建新对象
SaveClaimForm
,它将有新的ID
,并且您将在两行中有相同的对象您必须从数据库中获取原始
Claim
,并更新此对象中的值并保存它-然后它将使用原始ID
保存它,并且数据库中只有一个`对象顺便说一句:
Django
有一个特殊的类ModelForm
来用HTML创建表单。它也可能有方法来检查HTML中的数据是否正确-例如,如果字段不为空,电子邮件是否正确构造(name@domain.com
),电话是否只有号码等。因此使用ModelForm
比手动编写代码更有用相关问题 更多 >
编程相关推荐