使用 URL 将模型设置为 true 或 false
Use URL to set model as true or false
我有一个待办事项应用程序,我想要一个 link,用户可以在其中单击并将 "todo" 设置为完成,而无需将其从我的数据库中删除。
我使用 CBV,但不知道如何操作:
我试过了
views.py :
class TodoDeleteView(LoginRequiredMixin, DeleteView):
model = Todo
success_url = '/'
template_name = 'dashboard/dashboard_confirm_delete.html'
def completeTodo(request, todo_id):
todo = Todo.objects.get(pk=todo_id)
todo.complete = True
todo.save()
但是它从我的数据库中删除了它并且没有将其设置为 true。
我的models.py
class Todo(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE,verbose_name="Nom de l'utilisateur")
text = models.CharField(max_length=150, verbose_name="Nom de la Todo")
complete = models.BooleanField(default=False)
您定义一个 DeleteView
,删除对象只是 delete
控制流程的一部分。为了改变行为,我们可以覆盖 delete
函数,例如:
class TodoDeleteView(LoginRequiredMixin, DeleteView):
model = Todo
<b>pk_url_kwarg = 'todo_id'</b>
success_url = '/'
template_name = 'dashboard/dashboard_confirm_delete.html'
def <b>delete</b>(self, request, *args, **kwargs):
self.object = self.get_object()
success_url = self.get_success_url()
<b>self.object.complete = True</b>
self.object.save()
return HttpResponseRedirect(success_url)
pk_url_kwarg
是必要的,以使用它来获取主键以使用 get_object()
过滤和检索正确的对象。
我们可能想要使用 DeleteView
的原因是因为人们可以在该端点上发出 DELETE
请求。
我有一个待办事项应用程序,我想要一个 link,用户可以在其中单击并将 "todo" 设置为完成,而无需将其从我的数据库中删除。
我使用 CBV,但不知道如何操作:
我试过了
views.py :
class TodoDeleteView(LoginRequiredMixin, DeleteView):
model = Todo
success_url = '/'
template_name = 'dashboard/dashboard_confirm_delete.html'
def completeTodo(request, todo_id):
todo = Todo.objects.get(pk=todo_id)
todo.complete = True
todo.save()
但是它从我的数据库中删除了它并且没有将其设置为 true。
我的models.py
class Todo(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE,verbose_name="Nom de l'utilisateur")
text = models.CharField(max_length=150, verbose_name="Nom de la Todo")
complete = models.BooleanField(default=False)
您定义一个 DeleteView
,删除对象只是 delete
控制流程的一部分。为了改变行为,我们可以覆盖 delete
函数,例如:
class TodoDeleteView(LoginRequiredMixin, DeleteView):
model = Todo
<b>pk_url_kwarg = 'todo_id'</b>
success_url = '/'
template_name = 'dashboard/dashboard_confirm_delete.html'
def <b>delete</b>(self, request, *args, **kwargs):
self.object = self.get_object()
success_url = self.get_success_url()
<b>self.object.complete = True</b>
self.object.save()
return HttpResponseRedirect(success_url)
pk_url_kwarg
是必要的,以使用它来获取主键以使用 get_object()
过滤和检索正确的对象。
我们可能想要使用 DeleteView
的原因是因为人们可以在该端点上发出 DELETE
请求。