I am currently working on a blog project for learning purposes, I am trying to get the total number of posts made by a specific user. In my model I have set the User who makes a Post as Author.
In the Post detail page I am trying to show the total number of Posts made by this specific author but I am getting the data of the logged in User who is viewing the page.
The reason for this is using self in the get context data but I am not sure how to fix it so I need some explanation on how to amend this error in code.
Here is the Post Model:
class Post(models.Model):
title = models.CharField(max_length=100, unique=True)
content = RichTextUploadingField(null=True, blank=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='author')
Here is the views.py:
class PostDetailView(DetailView):
model = Post
template_name = "blog/post_detail.html"
def get_context_data(self, *args, **kwargs):
context = super(PostDetailView, self).get_context_data()
post = get_object_or_404(Post, slug=self.kwargs['slug'])
num_post = Post.objects.filter(author=self.request.user).count()#<--- No. of Posts made by an author
context["num_post"] = num_post #<--- No. of Posts made by a user
return context
My question: How to show the data of the post detail author not the logged in user
Thank you
replace
num_post = Post.objects.filter(author=self.request.user).count()
with:
num_post = Post.objects.filter(author=post.author).count()