Python Django - 使用pk时不存在匹配查询

时间:2014-01-31 01:26:45

标签: python django

Django和Python的新手,请原谅我,如果这很简单......

我试图删除MyClass类型的对象,但出于某种原因,当我确信对象确实存在时,我一直得到匹配的查询不存在错误。

我写了一个看起来像这样的删除方法:

  def delete(self, request, format=None, *args, **kwargs):

    identifier = request.DATA.get('identifier', None)
    my_object = MyObjectClass.objects.get(pk=identifier)

    if my_object:
      my_object.delete()
    return Response(status=status.HTTP_200_OK)

当我这样做时,我收到消息MyObjectClass匹配查询不存在。

但是,当我运行python manage.py shell时,我可以通过这种方式检索对象:

my_object = MyObjectClass.objects.get(pk=1001)

这可以按预期工作......所以显然存储在该标识符变量中的任何内容都是不正确的,尽管我无法弄清楚原因。我的问题:我必须做一些类型转换才能让它发挥作用吗?或者有没有人知道为什么这可能会破裂?

谢谢!

1 个答案:

答案 0 :(得分:0)

identifier的价值必定是错误的。尝试使用顶部的调试器 - import pdb,然后在pdb.set_trace()下面放置一个断点行(identifier = foo)。然后使用manage.py runserver运行开发服务器,当它遇到断点类型identifier时,我很确定你会发现它不是1001.如果是这样,你需要弄清楚出了什么问题与您的http请求。

顺便提一下,我使用request.GET而不是request.DATA;我不知道这是否有效。