Здравствуйте нужна помощь в отображении комментариев к каждому посту на главной странице

может ли кто-нибудь помочь мне, пожалуйста. я хочу отображать количество комментариев на главной странице блога, где отображаются все посты. я хочу отображать количество комментариев на главной странице блога. комментариев на главной странице блога, где отображаются все посты. Я хочу, чтобы отображать количество комментариев на маленькой иконке комментария под каждым постом, есть. есть. спасибо

.

моя модель:

class BlogPost(models.Model):

    sno = models.AutoField(primary_key=True)
    title = models.CharField(max_length=60, null=False, blank=False)
    body = models.TextField(max_length=5000, null=False, blank=False)
    image = models.ImageField(upload_to=upload_location, null=False, blank=True)
    date_published = models.DateTimeField(auto_now_add=True, verbose_name="date_published")
    date_updated = models.DateTimeField(auto_now=True, verbose_name="date_updated")
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    category = models.CharField(max_length=20, choices=CATEGORIES_NAME, default='Entertainment')
    slug = models.SlugField(blank=True, unique=True)

    def __str__(self):
        return self.title

class BlogComment(models.Model):

    sno = models.AutoField(primary_key=True)
    comment = models.TextField()
    user = models.ForeignKey(Account, on_delete=models.CASCADE)
    post = models.ForeignKey(BlogPost, on_delete=models.CASCADE)
    timestamp = models.DateTimeField(default=now)

    def __str__(self):
        return str(self.sno)

просмотр моей домашней страницы:

BLOG_POSTS_PER_PAGE = 4

def home_screen_view(request):

context = {}

query = ""

if request.GET:
    query = request.GET.get('q', '')
    context['query'] = str(query)
blog_posts = sorted(get_blog_queryset(query), key=attrgetter('date_updated'), reverse=True)
comments = BlogComment.objects.all()

# Pagination
page = request.GET.get('page', 1)
blog_posts_paginator = Paginator(blog_posts, BLOG_POSTS_PER_PAGE)

try:
    blog_posts =blog_posts_paginator.page(page)
except PageNotAnInteger:
    blog_posts =blog_posts_paginator.page(BLOG_POSTS_PER_PAGE)
except EmptyPage:
    blog_posts =blog_posts_paginator.page(blog_posts_paginator.num_pages)
    
context['blog_posts'] = blog_posts
context['comments'] = comments
return render(request, "personal/home.html", context)
    this is personal/home.html
    
                <!-- Blog posts-->
                {% if blog_posts %}
                    {% for post in blog_posts %}
                        <div class="blog-post-container">
                            {% include 'blog/snippets/blog_post_snippet.html' with blog_post=post %}
                        </div>
                    {% endfor %}
                {% else %}
                    <div class="blog-post-container">
                        {% include 'blog/snippets/blog_post_snippet.html' with query=query %}
                    </div>
                {% endif %}
                <!-- End Blog posts-->
    
                <!-- Pagination -->
                {% include 'blog/snippets/blog_post_pagination.html' with blog_posts=blog_posts %} 


this is blog_post_snippet.html

where the loop is running


    {% include 'blog/snippets/modal.html' %} 
    {% if blog_post %}
        <div class="container">
            <div class="row">
                <!-- Blog Post -->
                <div class="card m-auto">
                    {% if blog_post.image %}
                        <a href="{% url 'blog:detail' blog_post.slug %}">
                            <img class="p-0 m-0 card-img-top" src="{{blog_post.image.url}}">
                        </a>
                    {% endif %}
                    <div class="row">
                        <div class="card-body col-lg d-lg-block d-none mt-2 mb-2">
                            <span class="badge bg-secondary">{{ blog_post.category }}</span>
                            <a href="{% url 'blog:detail' blog_post.slug %}" class="text-decoration-none">
                                <h2 class="card-title post-heading mt-3">{{blog_post.title}}</h2>
                            </a>
                            {% if blog_post.body|length >= 100 %}
                                <p class="card-text body-text-small post-body" id="bodyText">{{blog_post.body}}</p>
                                <a class="btn btn-outline-success btn-sm read-more" id="readMore">Read More</a>
                                <a class="btn btn-outline-success btn-sm read-less" id="readLess">Read Less</a>
                            {% else %}
                                <p class="card-text post-body" id="bodyText">{{blog_post.body}}</p>
                            {% endif %}
                            {% if blog_post.author == request.user %}
                                <a href="{% url 'blog:edit' blog_post.slug %}" class="btn btn-outline-primary btn-sm"><i
                                    class="fas fa-edit"></i> Update</a>
                                <a href="#" data-toggle="modal" data-target="#smallModal" class="btn btn-outline-danger btn-sm"><i class="far fa-trash-alt"></i> Delete</a>
                            {% endif %}
    here is the problem. im getting all the comments displayed here related to the post. but when im trying to enter {{ comment.comment.count}} its throwing this error "no signature found for builtin <built-in method count of str object at 0x00000135AE4CFF70>".
                            {% for comment in comments %}
                                {% if comment.post == blog_post%}
                                    {{ comment.comment }}
                                {% endif %}
                            {% endfor %}
                                <a href="{% url 'blog:detail' blog_post.slug %}" class="btn btn-outline-secondary btn-sm"><i class="far fa-comment"></i></a>
                        </div>
                        <div class="card-body d-lg-none mt-2 mb-2">
                            <span class="badge bg-secondary">{{ blog_post.category }}</span>
                            <a href="{% url 'blog:detail' blog_post.slug %}" class="text-decoration-none">
                                <h2 class="card-title post-heading mt-3">{{blog_post.title}}</h2>
                            </a>
                            {% if blog_post.body|length >= 120 %}
                                <p class="card-text body-text-small post-body" id="bodyText">{{blog_post.body}}</p>
                                <a class="btn btn-outline-success btn-sm read-more" id="readMore"><i class="fas fa-chevron-circle-down"></i></a>
                                <a class="btn btn-outline-success btn-sm read-less" id="readLess"><i class="fas fa-chevron-circle-up"></i></a>
                            {% else %}
                                <p class="card-text post-body" id="bodyText">{{blog_post.body}}</p>
                            {% endif %}
                            {% if user.is_superuser %}
                                <a href="{% url 'blog:edit' blog_post.slug %}" class="btn btn-outline-primary btn-sm"><i class="fas fa-edit"></i></a>
                                <a href="#" data-toggle="modal" data-target="#smallModal" class="btn btn-outline-danger btn-sm"><i class="far fa-trash-alt"></i></a>
                            {% endif %}
                                <a href="{% url 'blog:detail' blog_post.slug %}" class="btn btn-outline-secondary btn-sm"><i class="far fa-comment"></i></a>
                                </a>
                        </div>
                    </div>
                    <div class="card-footer text-muted post-info">
                        <small class="text-secondary">Updated on {{blog_post.date_updated}}</small>
                    </div>
                </div>
            </div>
        </div>
    {% else %}
        <div class="container">
            <div class="row">
                <div class="card m-auto">
                    <div class="card-body mt-2 mb-2">
                        <h2 class="card-title">No results</h2>
                        <p class="card-text">There were no results matching the Query: <strong>{{query}}</strong></p>
                    </div>
                </div>
            </div>
        </div>
    {% endif %}

here is the view.py 

from django.shortcuts import render
from django.db.models import Count 
from operator import attrgetter
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from account.models import Account
from blog.views import get_blog_queryset
from blog.models import BlogComment, BlogPost

BLOG_POSTS_PER_PAGE = 4

def home_screen_view(request):
    
    context = {}

    query = ""

    if request.GET:
        query = request.GET.get('q', '')
        context['query'] = str(query)
        # context['success_message'] = f'Search results for query "{query}"'
    blog_posts = sorted(get_blog_queryset(query), key=attrgetter('date_updated'), reverse=True)
    comments = BlogComment.objects.annotate(number_of_comments=Count('comment'))

    # Pagination
    page = request.GET.get('page', 1)
    blog_posts_paginator = Paginator(blog_posts, BLOG_POSTS_PER_PAGE)

    try:
        blog_posts =blog_posts_paginator.page(page)
    except PageNotAnInteger:
        blog_posts =blog_posts_paginator.page(BLOG_POSTS_PER_PAGE)
    except EmptyPage:
        blog_posts =blog_posts_paginator.page(blog_posts_paginator.num_pages)
        
    context['blog_posts'] = blog_posts
    context['comments'] = comments
    return render(request, "personal/home.html", context)

    it will be great if somehow i can count the number of comments on a post here instead of getting comments itself. it will great help. im trying from longtime but still can not get it done. please help. thanks
Вернуться на верх