объект ‘int’ не может быть повторен. Как решить эту проблему?

#html #css #django-views #django-templates

Вопрос:

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 %} 

Ответ №1:

Ты пишешь:

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

но тогда posts это не QuerySet число Post объектов, а целое число. Тебе следует отказаться от этой .count() роли:

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

Комментарии:

1. большое вам спасибо за ваш отклик и доступность. моим намерением было сосчитать, сколько раз выходить в search…so как я могу это сделать?

2. Вы также можете определить переменную num_posts = posts.count() и передать ее в контекст, но поскольку вы ее используете {% for post in posts %} , это означает posts , что это должна быть коллекция объектов модели.

3. благодаря вашему ценному вкладу я решил эту проблему.