数据库中的待办事项列表项更新不适用于 Django
Posted
技术标签:
【中文标题】数据库中的待办事项列表项更新不适用于 Django【英文标题】:To Do List item update in database not working with Django 【发布时间】:2021-05-22 21:13:00 【问题描述】:我想完成我的待办事项应用程序。但是,我仍然无法正确编辑项目。我的想法是通过选择特定项目并用.save()
覆盖其信息来更新数据库。有人能找出正确的update()
函数来让它工作吗?
这是我的代码:
urls.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
path("<int:aufgabenzettel_id>", views.details, name="details"),
path("add/", views.add, name="add"),
path("delete/<int:aufgabenzettel_id>", views.delete, name="delete"),
path("edit/<int:aufgabenzettel_id>", views.edit, name="edit"),
path("update/<int:aufgabenzettel_id>", views.update, name="update")
]
models.py
from django.db import models
# Create your models here.
class Aufgabenzettel(models.Model):
Aufgabeselbst = models.CharField(max_length=64)
def __str__(self):
return f"self.Aufgabeselbst"
views.py
from django.http.response import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from .models import Aufgabenzettel
# Create your views here.
def index(request):
return render(request, "aufgabenzettel/index.html",
"Aufgabenliste":Aufgabenzettel.objects.all()
)
def details(request, aufgabenzettel_id):
aufgabenzettel = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
return render(request, "aufgabenzettel/details.html",
"details":aufgabenzettel
)
def add(request):
if request.method == "POST":
Aufgabe = request.POST["Hinzufügen"]
Aufgabenzettel.objects.create(Aufgabeselbst=Aufgabe)
return HttpResponseRedirect(reverse("index"))
return render(request, "aufgabenzettel/add.html")
def delete(request, aufgabenzettel_id):
aufgabenzettel = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
aufgabenzettel.delete()
return HttpResponseRedirect(reverse("index"))
def edit(request, aufgabenzettel_id):
aufgabenzettel = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
return render(request, "aufgabenzettel/edit.html",
"details":aufgabenzettel
)
def update(request, aufgabenzettel_id):
if request.method == "POST":
Aufgabe = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
Aufgabejetzt = request.POST["Bearbeiten"]
Aufgabejetzt.save()
return HttpResponseRedirect(reverse("index"))
else:
Aufgabe = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
return render(request, "aufgabenzettel/edit.html",
"details":Aufgabe
)
index.html
% extends "aufgabenzettel/layout.html" %
% block body %
<h1>Meine Aufgaben</h1>
<ol>
% for Aufgabeselbst in Aufgabenliste %
<li>
<a href="% url 'details' Aufgabeselbst.id %">
Aufgabeselbst
</a>
<form action="% url 'delete' Aufgabeselbst.id %" method="post">
% csrf_token %
<button type="submit">Löschen</button>
</form>
<form action="% url 'edit' Aufgabeselbst.id %" method="post">
% csrf_token %
<button type="submit" value=" details ">Bearbeiten</button>
</form>
</li>
% endfor %
</ol>
<h2>
<a href="% url 'add' %">Neue Aufgabe erstellen</a>
</h2>
% endblock %
add.html
% extends "aufgabenzettel/layout.html" %
% block body %
<h1>Füge eine neue Aufgabe hinzu</h1>
<form action="% url 'add' %" method="post">
% csrf_token %
<input type="text" name="Hinzufügen" placeholder="Neue Aufgabe">
<button type="submit">Hinzufügen</button>
</form>
% endblock %
edit.html
% extends "aufgabenzettel/layout.html" %
% block body %
<form action="% url 'update' details.id %" method="post">
% csrf_token %
<input type="text" name="Bearbeiten" value="details">
<button type="submit">Bearbeiten</button>
</form>
<a href="% url 'index' %">Zurück zu Aufgabe</a>
% endblock %
details.html
% extends "aufgabenzettel/layout.html" %
% block body %
<h1> details </h1>
<a href="% url 'index' %">Zurück zu Aufgabe</a>
% endblock %
我收到此错误:'str' 对象在我的 views.py 中没有与 Aufgabejetzt.save()
相关的属性 'save'。我知道 Aufgabejetzt 实际上是一个字符串对象,因此无法连接到数据库。但这就是重点......我不知道如何正确连接这两个......
感谢您的各种帮助!
【问题讨论】:
我刚刚看到有人试图回复。可悲的是,我编辑帖子后评论消失了...... :(你能重新发布吗? 你能发布你的回溯吗?以图片形式发布。 【参考方案1】:问题出在这一行:
Aufgabejetzt = request.POST["Bearbeiten"]
Aufgabejetzt.save()
您将一个字符串分配给您的对象,该对象上没有保存方法。
你可能想要:
Aufgabe.Aufgabejetzt = request.POST["Bearbeiten"]
Aufgabe.save()
【讨论】:
感谢您的建议!您解决了错误,但它以某种方式没有更新数据库...当我按下 Bearbeiten 按钮时,我只是被重定向到原始任务仍然存在的索引。知道如何解决这个问题吗? 刚发现应该是Aufgabe.Aufgabeselbst = request.POST["Bearbeiten"]
;) 非常感谢您的帮助!非常感谢!以上是关于数据库中的待办事项列表项更新不适用于 Django的主要内容,如果未能解决你的问题,请参考以下文章