Python 在Django中获取QuerySet的一个或零个元素?
在Django3.1中,假设我有一些模型Python 在Django中获取QuerySet的一个或零个元素?,python,django,Python,Django,在Django3.1中,假设我有一些模型M,我有一个QuerySetoverM,我期望它有一个或零个元素。如何根据它是一个元素还是零元素进行分支(如果它有两个或多个元素,则引发异常),以及在具有一个元素的分支中,如何获取一个M对象: try: my_query_set = M.objects.filter(some_filter_expr) if ???: m = ??? # the one M object else: on_zero_o
M
,我有一个QuerySet
overM
,我期望它有一个或零个元素。如何根据它是一个元素还是零元素进行分支(如果它有两个或多个元素,则引发异常),以及在具有一个元素的分支中,如何获取一个M
对象:
try:
my_query_set = M.objects.filter(some_filter_expr)
if ???:
m = ??? # the one M object
else:
on_zero_objects()
except ???:
more_than_one_object()
使用(或)
您可以使用.get()
获取单个元素,并处理DoesNotExist
案例和MultipleObjectsReturned
案例的异常
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()
您可以使用来检查my_queryset
中是否存在任何数据,如果存在,则使用来获取一个对象。如果有多个对象,则会引发错误。在except块中,可以使用多个\u对象处理它
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()
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()
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()