Django:从 html 模板更新 sqlite 数据库

问题描述 投票:0回答:1

我有一个名为“FormDB”的数据库表。 我已经编写了一个用于 CURD 操作的程序。对于每行数据库数据,都有两个按钮“EDIT”和“DELETE”。 当我在

HTML
模板中输入 <form action = "" method = "POST"> 时,编辑按钮即可正常工作。但是当我重定向到显示所有数据库数据的页面时,它会创建一行新数据,而不是更新现有值。

view.py

def EditData(request, id):
a = FormDB.objects.get(id=id)
nameupdate = a.name
form = DjangoForm(request.POST)

if request.method == "POST" and form.is_valid():
    newname = form.cleaned_data['name']
    b = FormDB.objects.get(id=id)
    b.name = newname
    b.save()
return render(request, "editform.html", {'nameupdate' : nameupdate})

editform.html

    <body>
    <h1>EDIT PAGE</h1>
    <form action = "" method = "POST">
        {% csrf_token %}
        {% if nameupdate %}
            <label>Enter new name: </label>
            <input type="text" name = "name" placeholder = {{ nameupdate }} REQUIRED>
            <input type="submit" value = "Submit Changes" ><br>
        {% endif %}
    </form>

因此,当我单击“提交更改”时,它应该重定向到所有数据库数据显示更新值的页面。

python django sqlite django-forms django-templates
1个回答
0
投票

您在 nameupdate 中获取了旧数据,您需要更新它

def EditData(request, id):
   a = FormDB.objects.get(id=id)
   nameupdate = a.name
   form = DjangoForm(request.POST)

   if request.method == "POST" and form.is_valid():
       newname = form.cleaned_data['name']
       b = FormDB.objects.get(id=id)
       b.name = newname
       b.save()
       nameupdate = b.name
   return render(request, "editform.html", {'nameupdate' : newname})
© www.soinside.com 2019 - 2024. All rights reserved.