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

Tech Life

エンジニアの生き方を考えるメディア

  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • 利用規約
  • プロフィール
You are here: Home / IT・プログラミング / Python / フレームワーク / Django / Djangoのget_object_or_404,get_list_or_404を使ってDBからレコードを取得する

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

2019年5月11日 by 9nmatsumoto

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ページを表示

Filed Under: Django Tagged With: django, python

Primary Sidebar

注目記事

ITエンジニアとしてスキルを高めるためのUdemy講座一覧(格安クーポン付き)

イメージ画像

スポンサーリンク

Footer

格安学習講座

ITエンジニアとしてスキルを高めるためのUdemy講座一覧(格安クーポン付き)

20時間以上のコースが2000円以内で購入して、一つの分野をマスターできます!!