如何使用django从数据库(MySQL)中选择30个唯一的随机值?

时间:2011-05-03 15:21:55

标签: python mysql database django django-database

我读过这个问题:In Django, how do I select 100 random records from the database?
并尝试使用Content.objects.all().order_by('?')[:30],但这会产生一些重复的项目。那么如何从数据库中选择30个唯一随机值?

1 个答案:

答案 0 :(得分: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)