我正在和一些同事就这个问题进行辩论。当您只需要一个对象时,是否有一种首选方法可以在 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
第一种方法在行为上似乎更正确,但在控制流中使用了异常,这可能会引入一些开销。第二个更迂回,但永远不会引发异常。
关于这些中哪一个更可取的任何想法?哪个更有效率?