第一种方法:适合于数据库数量百万级别时使用
MyModel.objects.order_by('?')[:2]
第二种方法:适合用于数量在上亿级别时使用
last = MyModel.objects.count() - 1 # 这是一个获取两个不重复随机数的简单方法 index1 = randint(0, last) index2 = randint(0, last - 1) if index2 == index1: index2 = last MyObj1 = MyModel.objects.all()[index1] MyObj2 = MyModel.objects.all()[index2] # 优化代码 sample = random.sample(xrange(Record.objects.count()),n) result = [Record.objects.all()[i] for i in sample] # 最优化代码 result = random.sample(Record.objects.all(),n)
参考文章:https://stackoverflow.com/questions/1731346/how-to-get-two-random-records-with-django