You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Django分页时持续出现‘object of type method has no len()’错误怎么办?

解决‘object of type 'method' has no len()’错误

你遇到的问题根源在这行代码:

allPosts = Post.objects.all().order_by("id").reverse

reverse是QuerySet的方法,你现在只是把方法本身赋值给了allPosts,而没有执行它。Paginator需要接收一个可计算长度的对象(比如QuerySet),但方法对象没有len(),所以触发了这个错误。

只需要给reverse加上括号,让它执行并返回反转后的QuerySet就行:

from django.core.paginator import Paginator

def index(request):
    # 给reverse加上括号,执行方法获取反转后的QuerySet
    allPosts = Post.objects.all().order_by("id").reverse()

    #paginator
    paginator = Paginator(allPosts, 10)
    page_number = request.GET.get('page')
    posts_of_page = paginator.get_page(page_number)

    return render(request, "network/index.html", {
        "allPosts" : allPosts,
        "posts_of_page" :  posts_of_page,
    })

另外提一句,其实你也可以直接用order_by("-id")来替代order_by("id").reverse(),效果完全一致,代码还更简洁:

allPosts = Post.objects.all().order_by("-id")

内容的提问来源于stack exchange,提问作者Snowbreak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:27:01