この記事の最終更新日: 2020年10月31日
allメソッドで取得したレコード=QuerySetクラスのインスタンス
前回はレコードの全件取得、検索して1レコードのみ取得する方法を解説しました。
ここで皆さんに知っておいて欲しいことがあります。
実はallメソッドで取得したレコードは、QuerySetというクラスのインスタンスなのです。
そして、このクラスは非常に便利なメソッドを持っています。
レコードを辞書型で取得できる、valuesメソッド
今まで解説した通りにインスタンスから値を取り出すことも可能なのです。
しかし、valuesメソッドを使うことで、レコードを辞書型で取り出すことも可能です。
辞書型で取り出すことで、使い勝手が格段に上がるので、積極的な使用をおすすめします。
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Customer
def index(request):
data = Customer.objects.all().values('id','name')
params = {
'title':'DB_Practice',
'message':'all data:',
'data': data,
}
return render(request, 'hello/index.html',params)
index,py
{% load static %}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>{{title}}</title>
</head>
<body>
<h1>{{title}}</h1>
<p>{{data}}</p>
<table>
<tr>
<th>data</th>
</tr>
{% for item in data %}
<tr>
<td>{{item}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
実行画面
レコードをリスト型で取得できる、values_listメソッド
values_listメソッドを使うことで、レコードをリスト型で取り出すことも可能です。
リスト型も、使い勝手が良い型なので、こちらの利用もおすすめです。
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Customer
def index(request):
data = Customer.objects.all().values_list('id','name')
params = {
'title':'DB_Practice',
'message':'all data:',
'data': data,
}
return render(request, 'hello/index.html',params)
index.html
#上記と同様のため、省略
実行画面
その他の便利なメソッド
firstメソッド
lastメソッド
countメソッド
以上、レコードを取得するメソッドの基本についての解説でした。
次回に続きます。
大阪のエンジニアが書いているブログ。
コメント