3 回答

TA貢獻1806條經驗 獲得超8個贊
使用.first()
(或last()
)
one_or_none?=?M.objects.filter(some_filter_expr).first()
因此,該變量one_or_none
將具有 model 的實例M
或None
您可以按以下方式處理多于貨幣元素的條件或單獨的條件,
my_query_set = M.objects.filter(some_filter_expr)
try:
? ? my_query_set[1]
? ? handle_more_than_one_element()
except IndexError:
? ? try:
? ? ? ? my_query_set[0]
? ? ? ? handle_only_one_element()
? ? except IndexError:
? ? ? ? handle_no_element()

TA貢獻1847條經驗 獲得超7個贊
您可以使用.exists()
檢查 中是否存在任何數據my_queryset
,如果有,則使用.get()
獲取一個對象。如果有多個對象,則會引發MultipleObjectsReturned
錯誤。在 except 塊中,您可以使用 來處理它more_than_one_object
。
my_query_set = M.objects.filter(some_filter_expr)
try:
? ? if my_query_set.exists()
? ? ? ? m = my_query_set.get()
? ? else:
? ? ? ? on_zero_objects()
except MultipleObjectsReturned:
? ? more_than_one_object()

TA貢獻1827條經驗 獲得超8個贊
您可以使用來獲取單個元素,并處理案例和案例.get()的異常。DoesNotExistMultipleObjectsReturned
from django.core.exceptions import MultipleObjectsReturned
...
try:
model_object = M.objects.get(some_filter_expr)
except M.DoesNotExist:
on_zero_objects()
except MultipleObjectsReturned:
more_than_one_object()
添加回答
舉報