获取对象时如何处理“不存在匹配查询”

当我想使用get()函数选择对象时

personalProfile = World.objects.get(ID=personID)

如果get函数不返回查找值,则“不存在匹配查询”。发生错误。

如果我不需要此错误,我将使用try和except函数

try:

personalProfile = World.objects.get(ID=personID)

except:

pass

但是我认为这不是自使用以来最好的方法

except:

pass

请推荐一些想法或代码示例来解决此问题

回答:

这取决于你不存在时要执行的操作。

那里get_object_or_404:

在给定的模型管理器上调用get(),但是它引发Http404而不是模型的DidNotExist异常。

get_object_or_404(World, ID=personID)

除了你当前执行的代码外,这与try非常接近。

否则有get_or_create:

personalProfile, created = World.objects.get_or_create(ID=personID)

虽然,如果你选择继续使用当前的方法,则至少要确保将except定位到正确的错误,然后根据需要进行一些处理

try:

personalProfile = World.objects.get(ID=personID)

except MyModel.DoesNotExist:

raise Http404("No MyModel matches the given query.")

上面的try / except句柄类似于在文档中找到的get_object_or_404 …

以上是 获取对象时如何处理“不存在匹配查询” 的全部内容, 来源链接: utcz.com/qa/415566.html

回到顶部