【发布时间】:2010-11-04 08:52:06
【问题描述】:
我正在与一些同事就此进行辩论。当您只需要一个对象时,是否有一种首选方法可以在 Django 中检索对象?
两种明显的方式是:
try:
obj = MyModel.objects.get(id=1)
except MyModel.DoesNotExist:
# We have no object! Do something...
pass
还有:
objs = MyModel.objects.filter(id=1)
if len(objs) == 1:
obj = objs[0]
else:
# We have no object! Do something...
pass
第一种方法在行为上似乎更正确,但在控制流中使用了异常,这可能会引入一些开销。第二个更迂回,但永远不会引发异常。
有什么想法更可取吗?哪个更有效率?
【问题讨论】:
标签: django django-models django-queryset