私は何人かの同僚とこれについて議論していました。1 つだけを期待しているときに、Django でオブジェクトを取得するための推奨される方法はありますか?
2 つの明白な方法は次のとおりです。
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
最初の方法は動作的にはより正しいように見えますが、制御フローで例外を使用するため、オーバーヘッドが発生する可能性があります。2 つ目はより回りくどいですが、例外を発生させることはありません。
これらのどれが好ましいかについて何か考えはありますか? どちらがより効率的ですか?