私はこれについていくつかの同僚と議論していました。 Djangoでオブジェクトを取得する方法はありますか?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つ目はよりラウンドアバウトですが、例外は発生しません。
これらのいずれかの考えが良いですか?どちらがより効率的ですか?
ジャンゴではありませんが、それでも経験上のスポット。明示的で簡潔で安全なのは、言語やフレームワークに関係なく、良い原則です。 – nevelis