#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. благодаря вашему ценному вкладу я решил эту проблему.