我一直在研究这个问题太久了,尽管我的所有研究都无法找出问题所在。不可否认,我是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),
当我打开故障单并单击应该调用此视图的链接时,会显示预期的页面,但仍然列出了我刚刚尝试删除的故障单。我在任何地方都没有收到任何错误,但这段代码什么也没做。为什么呢?
感谢您的帮助!它一直让我发疯。
答案 0 :(得分:4)
我会假设你的缩进是正确的。
Pretty sure您应该ticket.delete()
,因为它是您要删除的object
,而不是整个查询集,您不需要.all()
。实际上,要删除你写的Ticket.objects.all().delete()
多个对象,所以你使用的语法是完全错误的,我很惊讶它不会抛出异常。
此外,您不应仅通过GET
请求删除POST
。
最后,您应该使用reverse
进行重定向,或至少使用绝对网址。