我正在和同事讨论这个问题。在 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
第一种方法在行为上似乎更正确,但是在控制流中使用异常可能会引起一些开销。第二种方式更为迂回,但永远不会提出例外。
你觉得哪个更好? 哪个更有效率?