Django的。从较大的Query返回一个随机的小列表

时间:2014-08-06 21:59:18

标签: python django random

我完全迷失在这里,因为这适用于普通列表但不适用于djnago查询集。

我想返回一个列表,其中包含从django查询中随机选择的3个对象。

我试过了:

def get_small_list():

    indexes = range(7)
    random.shuffle(indexes)
    query_objects = Posts.objects.filter(...)[:7]
    small_list = []
    for i in range(3):
        index = indexes.pop()
        post = query_objects[index]
        small_list.append(post)

    return small_list

......它不起作用。有时,small_list有重复的值。我不知道为什么。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

官方文件说:https://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by-fields

  

要随机订购,请使用"?",如下:

     

Entry.objects.order_by('&#39)

答案 1 :(得分:1)

不是一次挑选一个随机项,而是可以使用random.sample一步完成:

random.sample(query_objects, 3)