Мне нужно определить, имеет ли модель более 4 объектов или менее

Если в модели больше 4, то все работает нормально. но если меньше 4 .count() возвращает 0

posts_num = Post.objects.filter(author__id= self.kwargs["pk"]).count()
            print(posts_num)
            if posts_num >= 4:
                page_author_post = Post.objects.filter(author__id= self.kwargs["pk"]).order_by('-post_date')[:4]
            else:
                page_author_post = Post.objects.filter(author__id= self.kwargs["pk"]).order_by('-post_date')[:posts_num]
            current_user = self.request.user.id
    
    context["page_author_post"] = page_author_post

Вы не должны использовать нарезку, используя [:posts_num] в условии else. Оно уже есть в условии else, что означает, что posts_num всегда будет меньше 4 (т.е. 1 или 2 или 3).

Ваш код будет выглядеть так:

posts_num = Post.objects.filter(author__id= self.kwargs["pk"]).count()
            print(posts_num)
            if posts_num >= 4:
                page_author_post = Post.objects.filter(author__id= self.kwargs["pk"]).order_by('-post_date')[:4]
            else:
                page_author_post = Post.objects.filter(author__id= self.kwargs["pk"]).order_by('-post_date') # observe the change here
            current_user = self.request.user.id
    
    context["page_author_post"] = page_author_post
Вернуться на верх