相對列表來說,有些時候我們更需要獲取單個的對象, `` 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." |