从Django中的一个查询集中随机获取5个实例



我有这个视图函数,它可以呈现文章模型中的前5篇文章

def home_page(request):
qs = Article.objects.all()[:5]
context = {'article_list': qs}
return render(request, "home.html", context)

如何编辑它以输出任意随机5?

我尝试过这个解决方案,但没有成功。我不知道我做错了什么。

任何帮助都将不胜感激。

感谢

我更喜欢在每次页面加载时打乱整个查询集,并对模板中的前5个对象进行切片。在视图中:

ids = [i.id for i in Model.objects.filter(some_field=some_variable)] #list of the queryset's ids
random.shuffle(ids) # shuffle the ids
shuffled = [Model.objects.get(id=i) for i in ids] #map back the shuffled ids to corresponding objects

在模板中,循环浏览五个随机对象:

{% for i in shuffled|slice:'5' %}

这就是我的工作原理

from random import sample
def home_page(request):
id_list = Article.objects.all().values_list('id', flat=True)
random_profiles_id_list = sample(list(id_list), 5)
qs = Article.objects.filter(id__in=random_profiles_id_list)
context = {'article_list': qs}
return render(request, "home.html", context)

最新更新