Мне нужно определить, имеет ли модель более 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