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

Django中'int' object is not iterable错误的原因分析与解决方法

解决Django搜索功能中的'int' object is not iterable错误

嘿,这个问题我一眼就看出来啦!你怀疑是字典的锅,但其实根源在posts变量的赋值上。

错误原因

看你视图里的这段代码:

posts = RelatedPost.objects.filter(text__icontains=querystring).count()

.count()方法的作用是返回符合查询条件的记录总数,它的返回值是一个整数。但你在模板里写了{% for post in posts %},试图遍历这个整数——整数可不是可迭代对象(没法循环),所以就触发了'int' object is not iterable错误。

解决办法

根据你的需求,有两种处理方式:

  • 如果要展示符合条件的帖子内容:
    直接去掉.count(),让posts等于查询集本身(Django的QuerySet是可迭代的):

    posts = RelatedPost.objects.filter(text__icontains=querystring)
    

    这样模板里的{% for post in posts %}就能正常遍历每一篇帖子,显示post.text了。

  • 如果既要展示帖子列表,又要显示总数:
    把列表和总数分开存成两个变量:

    post_list = RelatedPost.objects.filter(text__icontains=querystring)
    post_count = post_list.count()
    context = {"posts": post_list, "post_count": post_count, "users": users}
    

    之后在模板里,你可以用{{ post_count }}显示帖子总数,同时循环posts来展示每篇帖子的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:38:11