![見出し画像](https://assets.st-note.com/production/uploads/images/48186081/rectangle_large_type_2_bc74418851ef417f21288831a001269f.jpeg?width=1200)
Photo by
mericanadesico
modelからデータを取得する方法
Djangoで作成したModelを使ってDBへデータ登録を行う方法は以前の記事で紹介しましたので、今回は登録したデータの取得方法を記事にします。
get()
一番簡単なのはget()を使う方法でしょう。
以前作成したStockというモデルがある前提で後述します。
登録されているデータは以下の通りとします。
id symbol date high low open close volume adj_close
122 U 2020/09/18 76.79 67 75 68.35 20621000 68.35
123 U 2020/09/21 73.98 65.11 67.11 72.96 5055200 72.96
124 U 2020/09/22 84.98 75.11 76.64 84.82 6893700 84.82
125 U 2020/09/23 88.88 79.9 88.67 81.85 4343900 81.85
126 U 2020/09/24 83.89 75.7 77.75 83.2 2487200 83.2
Stock.objects.get(id=122)を指定すれば下記のレコードをオブジェクトとして取得できます。
個々のカラムにアクセスする場合には以下のようにすればOK!
stock = Stock.objects.get(id=122)
stock.symbol # U
stock.date # 2020/09/18
stock.high # 76.79
stock.low # 67.0
stock.open # 75.0
stock.close # 68.35
stock.volume # 20621000
stock.adj_close # 68.35
filter()
SQLのWhere句と同様にANDやORを使用する事もできる。
stock = Stock.objects.filter(id=122) | Stock.objects.filter(id=123) | Stock.objects.filter(id=124)
stock[0].date # 2020-09-18
stock[1].date # 2020-09-21
stock[2].date # 2020-09-22
stock = Stock.objects.filter(id=122, symbol='U')
# listで返って来るので注意
stock[0].symbol # U
stock[0].date # 2020/09/18
stock[0].high # 76.79
stock[0].low # 67.0
stock[0].open # 75.0
stock[0].close # 68.35
stock[0].volume # 20621000
stock[0].adj_close # 68.35
oder_by()
SQLのorder by句と同じ意味。
# 昇順
stock = Stock.objects.filter(symbol='U').order_by('date')
# 降順('-'をつけると降順になるらしい。ちょっと驚き)
stock = Stock.objects.filter(symbol='U').order_by('-date')
# 降順(こっちのほうがパッと見わかりやすいか?)
stock = Stock.objects.filter(symbol='U').order_by('date').reverse()
他にも色々できることはあるが、とりあえず基本だけは抑えておこう。
この記事が気に入ったらサポートをしてみませんか?