DjangoのQuerySetでランダムに要素を取得
例えば、SomeModelというモデルクラスのインスタンスを10個取得する場合。
random_query_set = SomeModel.objects.order_by('?')[:10]
QuerySet API reference | Django documentation | Django
ただし、リファレンスによるとバックエンドで利用しているDBによっては、order_by('?')
は非常に遅くなる場合があるので利用には注意が必要です、とのこと。
下記サイトの情報によると、MySQLではORDER BY ?
は非常に計算コストがかかるらしいです。