1. ホーム
  2. パイソン

[解決済み】Djangoでオブジェクトが存在する場合はそれを取得し、存在しない場合はNoneを取得するには?

2022-03-27 23:59:32

質問

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

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

の代わりに DoesNotExist どうすれば go である None の代わりに?

どのように解決するのですか?

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

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

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