有没有办法忽略查询,如果它不存在而不是收到错误?

时间:2014-07-05 19:12:07

标签: django django-queryset

我有下面的代码,并且在按下按钮时尝试使用它来删除项目。我使用chain来设置两个查询并列出结果。现在我要做的是允许用户使用按钮删除列表中的任何内容。然而,当我测试它时,我得到一个错误,即2个查询集之一不存在。有没有办法只是强制它传递到下一行代码,如果它不存在与给我一个错误?

 Error:signedup matching query does not exist.


page = request.POST.get("page", False)

      if page == "delete":
         pk = request.POST.get("item")


         dancer = signedup.objects.get(pk=pk)
         team = team_signup.objects.get(pk=pk)
         if dancer == None:
           team.delete()
         elif team == None:
            dancer.delete()

1 个答案:

答案 0 :(得分:2)

您需要将异常处理放在:

try:
    dancer = signedup.objects.get(pk=pk)
except signedup.DoesNotExist:
    # handle error

我的回答将解决您获得的例外情况,但您的代码看起来还有其他一些问题:

  • 为什么您的team_signupsignedup会共享主键?
  • 为什么一次尝试删除这两种类型的东西?

您可能应该传递一个主键(对于要删除的对象)和对象的类型,以便您知道要从哪里删除。