删除一个对象Django-代码似乎是正确但不起作用?

时间:2011-06-25 16:41:55

标签: django django-forms django-views

我一直在研究这个问题太久了,尽管我的所有研究都无法找出问题所在。不可否认,我是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),

当我打开故障单并单击应该调用此视图的链接时,会显示预期的页面,但仍然列出了我刚刚尝试删除的故障单。我在任何地方都没有收到任何错误,但这段代码什么也没做。为什么呢?

感谢您的帮助!它一直让我发疯。

1 个答案:

答案 0 :(得分:4)

我会假设你的缩进是正确的。

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

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

最后,您应该使用reverse进行重定向,或至少使用绝对网址。