データベースのすべての要素を取得するとパフォーマンスに大きな影響を与える可能性があるため、すべてのデータベースオブジェクトのリストからランダムな要素を選択することは、グーグルソリューションではありません。order_by('?')
も使用しません。 djangoのドキュメント
に記載されているとおり 。
最善の解決策は、ランダムなインデックスを持つ要素を取得することです。
import random
random_idx = random.randint(0, Model.objects.count() - 1)
random_obj = Model.objects.all()[random_idx]