python 随机函数也给出了Django中随机数量的对象

pdkcd3nj  于 2023-03-21  发布在  Python
关注(0)|答案(1)|浏览(102)

我试图创建一个函数,在这个函数中,我给视图给予随机的对象,但是当我尝试这样做时,它也给了我一个随机数量的对象,即使我使用了(k =(int))。
查看:

def homeview(request):
    pks = Album.objects.values_list('pk', flat=True)
    random_pk = choices(pks, weights=None, cum_weights=None, k = 6)
    album = Album.objects.all().filter(pk__in=random_pk)

    return render(
        request,
        'home/home.html',
        {'albums': album},
    )
njthzxwz

njthzxwz1#

我无法比文档更好地回答这个问题。所以请阅读本节中的绿色框“性能注意事项”。
请注意,BlogQuerySet周围的list()调用强制执行第一个查询。没有它,将执行嵌套查询,因为QuerySet是惰性的。

import random

def homeview(request):
    pks = Album.objects.values_list('pk', flat=True)
    random_pk = random.choices(list(pks), weights=None, cum_weights=None, k = 6)  # pks to list
    album = Album.objects.filter(pk__in=random_pk)  # no .all()

    return render(
        request,
        'home/home.html',
        {'albums': album},
    )

告诉我这是否对你有用。当然如果你的数据库中没有超过6个Album对象,它仍然会给予随机结果。

相关问题