• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Django / Djangoのget_object_or_404,get_list_or_404を使ってDBからレコードを取得する

Djangoのget_object_or_404,get_list_or_404を使ってDBからレコードを取得する

1 get_object_or_404の詳細
2 get_list_or_404の詳細
3 まとめ
4 関連記事

Djangoのショートカット関数の中にget_object_or_404とget_list_or_404がある。

この記事では、その関数の使い方をソースコードを交えて記載します。


get_object_or_404の詳細

get_object_or_404とは、Djangoのショートカット関数と呼ばれるものの1つで、モデルに対してget()を呼び出してオブジェクトを1件取得する。

そして、モデルが見つからない場合には、django.http.Http404を送信して画面がPage not found(404)ページに遷移される。

コードは以下のように記載する。

myobject = get_object_or_404(MyModel, pk=1) # pk=1のものを1件取得

上の例では、MyModelモデルからpk=1のものが返されてmyobject変数に格納し、pk=1のものが仮に存在しないときにはHttp404となります。

もし、pk=1のものが複数存在する場合、pk=1のオブジェクトのうち1つだけ返される。

そのため、get_object_or_404は複数の値をリストで取得することはできず、リスト取得をする場合には後述するget_list_or_404を使うことになる。

 

また、以下のように記載すると複数のキーから値を取得できるようになる。
(このようにすると複数のカラムで主キーを設定しているテーブルからレコードを取得する際に有用)

myobject = get_object_or_404(MyModel, pk=1, name='aaaa') # pk=1, name='aaaa'のものを1件取得

ちなみに値が存在しなかった場合は以下のようなHttp404のページが表示される。


get_list_or_404の詳細

get_object_or_404はキーから値を1つ取得するショートカット関数だったが、get_list_or_404はフィルターをかけてリストとしてオブジェクトを取得する関数である。

以下のように記載する。

myobject = get_list_or_404(MyModel, pk=1) # pk=1ものを全て取得, classはList
 # myobject[0]とすると一つ目の値にアクセスできる

また、複数のキーを指定して値を絞り込むのもget_object_or_404と同様のやり方で行う。

myobject = get_list_or_404(MyModel, pk=1, name='aaa') # pk=1, name='aaa'ものを全て取得, classはList
# myobject[0]とすると一つ目の値にアクセスできる


まとめ

  • Djangoには、モデルから値を取得するショートカット関数としてget_object_or_404とget_list_or_404が存在
  • get_object_or_404は値を一件取得、存在しない場合は、Http404ページを表示
  • get_list_or_404は値をすべて取得、存在しない場合は、Http404ページを表示

関連記事

現役エンジニアがDjangoに関する本を5つ紹介
現役エンジニアがDjangoに関する本を5つ紹介
WindowsでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
WindowsでDjango、Anaconda、VSCode…
MacでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
MacでDjango、Anaconda、VSCodeのインス…
DjangoのFormに初期値を設定する方法
DjangoのFormに初期値を設定する方法
DjangoでModelのsave前後で処理を行うSignalのpre_save, post_saveの使い方
DjangoでModelのsave前後で処理を行うSigna…
DjangoのModelにSlugFieldを利用する。その利用方法と
DjangoのModelにSlugFieldを利用する。その…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 get_object_or_404の詳細
2 get_list_or_404の詳細
3 まとめ
4 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約