Django でオブジェクトが存在する場合はそれを取得、存在しない場合は None を取得するにはどうすればよいでしょうか? 質問する

Django でオブジェクトが存在する場合はそれを取得、存在しない場合は None を取得するにはどうすればよいでしょうか? 質問する

モデル マネージャーにオブジェクトを取得するように要求すると、DoesNotExist一致するオブジェクトがない場合にエラーが発生します。

go = Content.objects.get(name="baby")

の代わりにbe をDoesNotExist使うにはどうしたらいいでしょうか?goNone

ベストアンサー1

これを実行するための「組み込み」の方法はありません。Django はDoesNotExist毎回例外を発生させます。Python でこれを処理する慣用的な方法は、try catch でラップすることです。

try:
    go = SomeModel.objects.get(foo='bar')
except SomeModel.DoesNotExist:
    go = None

私が実際に行ったのは、 をサブクラス化しmodels.Managersafe_get上記のコードのような を作成し、そのマネージャーをモデルに使用することでした。 そうすれば、次のように記述できますSomeModel.objects.safe_get(foo='bar')

おすすめ記事