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)
这可以按预期工作......所以显然存储在该标识符变量中的任何内容都是不正确的,尽管我无法弄清楚原因。我的问题:我必须做一些类型转换才能让它发挥作用吗?或者有没有人知道为什么这可能会破裂?
谢谢!
答案 0 :(得分:0)
identifier
的价值必定是错误的。尝试使用顶部的调试器 - import pdb
,然后在pdb.set_trace()
下面放置一个断点行(identifier = foo
)。然后使用manage.py runserver
运行开发服务器,当它遇到断点类型identifier
时,我很确定你会发现它不是1001.如果是这样,你需要弄清楚出了什么问题与您的http请求。
顺便提一下,我使用request.GET而不是request.DATA;我不知道这是否有效。