見出し画像

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()

他にも色々できることはあるが、とりあえず基本だけは抑えておこう。


この記事が気に入ったらサポートをしてみませんか?