【问题标题】:'int' object is not iterable. How to solve this problem?'int' 对象不可迭代。如何解决这个问题呢?
【发布时间】:2021-11-28 17:00:24
【问题描述】:

1

为什么会出现错误?`

我该如何解决这个问题?在我看来,作为一本字典它会导致我出现这个错误

views
 
search(request):
    if "q" in request.GET:
        querystring = request.GET.get("q")
        if len(querystring) == 0:
            return redirect("/search/")
        posts = RelatedPost.objects.filter(text__icontains=querystring).count()
        users = User.objects.filter(username__icontains=querystring)
        context = {"posts": posts, "users": users}
        return render(request, 'registration/search.html', context)
    else:
        return render(request, 'conversation/search.html')

`

<div class="row mt-3">
        <div class="col-4">
            <h5><strong>Posts</strong></h5>
            {% if posts %}
                {% for post in posts %}
                    <p>{{ post.text }}</p>
                {% endfor %}
            {% else %}
                <p>---</p>
            {% endif %}
        </div>
         <div class="col-4">
            <h5><strong>User</strong></h5>
            {% if users %}
                {% for user in users %}
                    <p>{{ user }}</p>
                {% endfor %}
            {% else %}
                <p>---</p>
            {% endif %}

【问题讨论】:

    标签: html css django-views django-templates


    【解决方案1】:

    你写:

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

    但是posts 不是QuerySetPost 对象,而是一个整数。您应该删除 .count() 部分:

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

    【讨论】:

    • 非常感谢您的回复和可用性。我的意图是计算在搜索中出去了多少次......那我该怎么办?
    • 您也可以定义一个变量num_posts = posts.count() 并将其传递给上下文,但是由于您使用{% for post in posts %},这意味着posts 应该是模型对象的集合。
    • 感谢您的宝贵贡献,我解决了这个问题。
    猜你喜欢
    • 2020-04-01
    • 2021-04-19
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2013-08-02
    • 2012-06-21
    相关资源
    最近更新 更多