Djangoでレコード(クエリーセット)の操作をしているときに、ランダムに並び替えられたレコードを取得したいことはありませんでしょうか?
例えばpythonだったらrandom.choice()などでリストから値をランダムに取得できますが、Djangoのレコードだとどのように取得するのでしょうか?
本日はDjangoで格納されたレコードをランダムで取得する方法を紹介します。
コンテンツ
環境
・django 2.2
使用するタイミング
「どういう時に使えるのか?」って話ですが、例えばDjangoでブログサイトを制作していて、記事本文の最後にランダムに抽出した記事を挿入したいときなどに使えるテクニックになります。
ランダムに取得するコード
使い方は非常に簡単で、order_by()に渡す引数に’?’を与えてあげるだけでランダムに並び替えられたレコードを取得できます。
1 2 3 |
from .models import Blog qs = Blog.objects.order_by('?') |
ちなみにどのようなSQLを叩いているかは、後ろに.queryをつけるだけで確認ができます。
1 2 3 4 |
from .models import Blog qs = Blog.objects.order_by('?') print(qs.query) |
ちなみにorder_by(‘?’)はSQLでいうrand()を使用していることがわかります。
rand()関数は、乱数を生成しています。
以上です。
最後に
いかがでしたでしょうか。
以上が、「【Django】ランダムに並び替えられたレコードを取得する」の紹介記事になります。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す