首页 > 解决方案 > Django - 查询集索引而不是循环

问题描述

主页

在上图中,我试图找到一种方法来显示我的数据库中的 6 个精选帖子,而不是 HTML 中的六个静态实体。

这是主页的视图:

from django.shortcuts import render
from singlePost.models import Post

# Create your views here.
def index(request):
    queryset = Post.objects.filter(featured=True)
    context = {
        'object_list': queryset
    }
    return render(request, 'index.html', context)

这是主页 HTML 中的一些代码(循环通过 object_list):

{% for obj in object_list %}
{% if forloop.counter0 == 0 %}
<h3 class="mb-15 mb-sm-5 font-sm-13"><b>{{ obj.title }}</b></h3>
{% endif %}
{% endfor %}

我的问题是:我怎样才能获得 object_list 的索引,这样我就可以使用前 6 个特色帖子?

我不知道该怎么做,所以它目前正在遍历所有帖子,我使用上面看到的 if 来检查当前索引,但这似乎是错误的循环 6 次而不是使用索引。如果所有 div 都相同,则循环围绕 div 会很好,但正如您在图片中看到的那样,它们不是。

那么,如何获取 QuerySet 的索引呢?还是有比我想的两种方法更好的方法来做到这一点?

谢谢

标签: javascriptpythonhtmldjangodjango-queryset

解决方案


在 index() 你已经定义查询集如下

queryset = Post.objects.filter(featured=True).order_by("-id")[:6]

通过order_by("-id")将首先返回最新的精选帖子,而[:6]这将只给出 6 个帖子。

https://docs.djangoproject.com/en/2.2/ref/models/querysets/#reverse


推荐阅读