处理Django的objects.get的最佳方法是什么?
每次我这样做的时候:
thepost = Content.objects.get(name="test")
如果没有找到任何东西,它总是会报错。我该怎么处理这个问题呢?
8 个回答
18
你也可以捕捉一个通用的“不存在”的错误。根据文档的说明,详细内容可以查看这个链接:http://docs.djangoproject.com/en/dev/ref/models/querysets/
from django.core.exceptions import ObjectDoesNotExist
try:
e = Entry.objects.get(id=3)
b = Blog.objects.get(id=1)
except ObjectDoesNotExist:
print "Either the entry or blog doesn't exist."
37
通常,使用Django提供的快捷函数 get_object_or_404
会比直接使用API更有用:
from django.shortcuts import get_object_or_404
thepost = get_object_or_404(Content, name='test')
很明显,如果找不到这个对象,它会抛出一个404错误;如果成功找到,代码就会继续执行。
120
try:
thepost = Content.objects.get(name="test")
except Content.DoesNotExist:
thepost = None
使用模型的 DoesNotExist 异常