django備忘録26 QuerySet Basics
参照サイト
QuerySet API reference | Django documentation | Django
この辺のquerysetの使い方も参考になるとのこと。
DjangoのQuerySet の基本を学ぶ
多分、querysetは、model,viewとかで使われるんだろうな。
まず、試しに、querysetの動作を確認してみる。
views.py
print (SignUp.objects.all())
objectsは、多分、model にもともと備わってる関数。all()はすべて取得。
これで、ターミナルに表示される。
- 次に、SignUpのobjectsをforを使って取り出してみる。
for instance in SignUp.objects.all(): print (instance)
これで、ターミナルに、SignUpのemailが出力される。ただ、他の項目は出力されない。ここはキーもしくは、strだけなのか。。。よくわからん。
とにかくobjectsは、1つの塊を取り出すとイメージしておこう。
- 次に、instanceをキーにして?、他の項目も取り出す。
for instance in SignUp.objects.all(): print (i) print (instance.full_name) i += 1
これで、instanceから、full_nameを取り出せる。
- querysetをcontextに渡して、homeに表示させてみる。
views.py
... queryset = SignUp.objects.all() context = { "queryset":queryset } ...
これで、querysetを渡せる。
- home.html で、受け取ったquerysetは、django templateで、for構文を使ってリスト表示ができたりする。 例えば、以下のような感じ。
home.html
{% for instance in queryset %} {{ instance.full_name }} </br> {% endfor %}
ここで注意するのは、{{}} と{%%}の使い分け。
- さらに、表示したリストをテーブルタグでスタイリッシュにできる。
も忘れずに。
{% if queryset %} <h2>これはスタッフ用の画面です!</h2> <table class='table'> {% for instance in queryset %} <tr><td>{{ instance }}</td><td>{{ instance.full_name }}</td><td>{{ instance.timestamp }}</td></tr> {% endfor %} </table> {% endif %}
'{{ instance.timestamp|timesince }}' こういう感じのコードで、現時点からどれくらい経過しているのかが、表示できる。便利!
filter() と、icontains(ダブルアンダースコア) を使って、 filter(フィールド名icontains="フィルター文字列") で表示可能。 queryset = SignUp.objects.all().order_by('-timestamp').filter(full_name__icontains="Justin")
|