我在这方面工作了太长时间,尽管我做了所有的研究,但还是无法找出问题所在。不可否认,我是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。