删除对象Django代码似乎是正确的,但不起作用



我在这方面工作了太长时间,尽管我做了所有的研究,但还是无法找出问题所在。不可否认,我是django的新手。

我有一个票务应用程序,它使用表单创建、编辑和更新票务。我现在正试图根据ticket_id(主键)来删除它们。

在我看来,我有:

def deleteTicket(request, ticket_id):
ticket = Ticket.objects.get(pk=ticket_id)
ticket.delete.all()
redirect_to = 'project/tickets.html'
return HttpResponseRedirect(redirect_to)

在我的urls.py:

(r'^(?P<project_slug>[^.^/]+)/tickets/(?P<ticket_id>d+)$', views.deleteTicket),

当我打开一个票证并单击应该调用此视图的链接时,会出现预期的页面,但我刚刚尝试删除的票证仍在列表中。我在任何地方都没有得到任何错误,但这段代码什么也没做。为什么?

谢谢你的帮助!它把我逼疯了。

我假设您的缩进是正确的。

可以肯定的是,你只应该使用ticket.delete(),因为它是你要删除的object,而不是整个查询集,你不需要.all()。实际上,要删除多个对象,您需要编写Ticket.objects.all().delete(),所以您使用的语法完全错误,我很惊讶它没有抛出异常。

此外,您不应该通过GET请求删除,而应该仅通过POST删除。

最后,您应该使用reverse进行重定向,或者至少使用一个绝对URL。

最新更新