這就是我的 ToDoapp 的樣子
日期更改僅適用于串列中的最后一項,但對于其他專案,它會引發錯誤:
ValidationError at /
['“” value has an invalid date format. It must be in YYYY-MM-DD format.']
我看到無論我按下什么“更新”按鈕,它都只傳遞最后一個專案的 ID 和日期。
在下面找到我的代碼:
索引.html
{% extends 'base.html' %}
{% block content %}
<h3 style = "margin-bottom: 20px"><strong>To Do List App</strong></h3>
<form method="POST">
{%csrf_token%}
<ul class="list-group">
{% for task in tasklist %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<input type='hidden' name = 'task_id' value='{{task.id}}'>{{task.tasks}}
<span class="badge bg-primary rounded-pill">{{task.duedate}}
<input type="date" name="datepick" />
<input type='submit' value ='Update'>
</span>
</li>
{% endfor %}
</form>
視圖.py
def index(request):
if request.method == "POST":
task_id = request.POST.get('task_id')
task=Task.objects.get(id=task_id)
datepick = request.POST.get('datepick')
task.duedate = datepick
task.save()
tasklist = Task.objects.all()
return render(request, 'index.html', {'tasklist':tasklist})
模型.py
class Task(models.Model):
tasks = models.CharField(max_length=200)
duedate = models.DateField(blank=True)
我覺得錯誤出在 HTML 檔案中,我對 HTML 不熟悉。
uj5u.com熱心網友回復:
每行應該是一個獨立的表單,因為當前表單有 3 個同名元素
uj5u.com熱心網友回復:
您應該為表單中的每個元素提供一個唯一的名稱。由于它位于迭代器中,因此您可以將{{ forloop.counter }}
其用作名稱。
下面的鏈接會有所幫助。
Django - 在模板的for回圈中迭代數字
uj5u.com熱心網友回復:
串列中的每個任務都應該有自己的形式。
{% extends 'base.html' %}
{% block content %}
<h3 style = "margin-bottom: 20px"><strong>To Do List App</strong></h3>
<ul class="list-group">
{% for task in tasklist %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<form method="POST">
{%csrf_token%}
<input type='hidden' name = 'task_id' value='{{task.id}}'>{{task.tasks}}
<span class="badge bg-primary rounded-pill">{{task.duedate}}
<input type="date" name="datepick" />
<input type='submit' value ='Update'>
</span>
</form>
</li>
{% endfor %}
</ul>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/513627.html
標籤:Pythonhtmldjangodjango-viewsdjango-模板
上一篇:如何使用來自不同模型的兩個查詢集創建一個字典,使用公共DateTimeField作為字典鍵?
下一篇:第三周,都講了些什么?