Dat*_*dze 16 python django web
我有一些关于django exists()
和DoesNotExist
异常的问题.
示例代码:
id = 1
# first
if User.objects.get(pk=id).exists():
# my logic
pass
# second
try:
User.objects.get(pk=id)
# my logic
pass
except User.DoesNotExist:
return 0
Run Code Online (Sandbox Code Playgroud)
我经常使用get()
方法.哪种做法更好?哪个代码更好?第一个还是第二个?
big*_*ose 23
if User.objects.get(pk=id).exists()
这不起作用,所以问题很容易回答:这种方式不如工作的方式:-)
我猜你实际上没有制作一个Minimal Complete Verifiable Example,因此当你发布未经验证的代码时错过了错误.
所以相反,我想你问的是:
QuerySet.exists()
当你有一个QuerySet时(例如来自过滤器操作).
Model.objects.get(…)
并捕获Model.DoesNotExist
异常类型(或者,如果您希望更通用,则为父类型ObjectDoesNotExist
).
不同之处是:
该QuerySet.exists
方法在一个查询集上,这意味着你问它一个查询("有没有匹配这个查询的实例?"),你还没有尝试检索任何特定的实例.
DoesNotExist
当您实际尝试检索一个实例时,会引发模型的异常,但它不存在.
使用正确表达您的意图的任何一个.
归档时间: |
|
查看次数: |
15980 次 |
最近记录: |