この質問を読みました:Djangoで、データベースから100個のランダムレコードを選択するにはどうすればよいですか?
そして使用しようとしましContent.objects.all().order_by('?')[:30]
たが、これはいくつかの重複したアイテムを生成します。では、データベースから30個の一意のランダム値を選択するにはどうすればよいでしょうか。
1 に答える
2
データベースに扱いやすい数のエントリがある場合 (つまり、数千ではない場合)、これは機能し、db に 2 回ヒットしたとしても、おそらく よりもはるかに効率的ですorder_by('?')
。
import random
content_pks = Content.objects.values_list('pk', flat=True)
selected_pks = random.sample(content_pks, 30)
content_objects = Content.objects.filter(pk__in=selected_pks)
于 2011-05-03T15:26:08.440 に答える