相对列表来说,有些时候我们更需要获取单个的对象, `` get()`` 方法就是在此时使用的:
1
2
|
>>> Publisher.objects.get(name = "Apress" )
<Publisher: Apress>
|
这样,就返回了单个对象,而不是列表(更准确的说,QuerySet)。 所以,如果结果是多个对象,会导致抛出异常:
1
2
3
4
5
|
>>> Publisher.objects.get(country = "U.S.A." )
Traceback (most recent call last):
...
MultipleObjectsReturned: get() returned more than one Publisher - -
it returned 2 ! Lookup parameters were { 'country' : 'U.S.A.' }
|
如果查询没有返回结果也会抛出异常:
1
2
3
4
|
>>> Publisher.objects.get(name = "Penguin" )
Traceback (most recent call last):
...
DoesNotExist: Publisher matching query does not exist.
|
这个 DoesNotExist 异常 是 Publisher 这个 model 类的一个属性,即 Publisher.DoesNotExist。在你的应用中,你可以捕获并处理这个异常,像这样:
1
2
3
4
5
6
|
try :
p = Publisher.objects.get(name = 'Apress' )
except Publisher.DoesNotExist:
print "Apress isn't in the database yet."
else :
print "Apress is in the database."
|