获取对象时如何处理“不存在匹配查询”
当我想使用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