Подсчет количества сообщений, понравившихся пользователю, в Django

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

Вот мой models.py

class post(models.Model):
title = models.CharField(max_length = 255)
title_tag=models.CharField(max_length=255)
author = models.ForeignKey(User, on_delete = models.CASCADE)
body = models.TextField()

post_date = models.DateTimeField(auto_now_add=True)
category = models.CharField(max_length=255, default = "coding")


likes = models.ManyToManyField(User, related_name='blog_posts')

def __str__(self):
    return self.title + ' | ' + str(self.author) + ' | ' + str(self.category)


def get_absolute_url(self):
    from django.urls import reverse
    return reverse('article-detail',args=[self.id] )

def total_likes(self):
    return self.likes.count() 

Вот мой views.py

class ArticleDetailView(DetailView):
model = post
template_name = 'article_details.html'


def get_context_data(self,*args,**kwargs):
    cat_menu = Category.objects.all()
    #amount_of_user_likes = ????

    context = super(ArticleDetailView,self).get_context_data(*args,**kwargs)
    '''context allows us to access these values on our page'''
    stuff=get_object_or_404(post,id=self.kwargs['pk'])


    total_likes= stuff.total_likes()


    liked = False
    if stuff.likes.filter(id=self.request.user.id).exists():
        liked = True
    context['cat_menu'] = cat_menu
    context['total_likes']=total_likes
    context['liked'] = liked
    context['amount_of_user_likes']=amount_of_user_likes
    return context

Я не уверен, как запросить базу данных, чтобы получить количество сообщений, которые понравились пользователю, поскольку столбец liked находится в таблице post, а не в таблице user. Однако, поскольку это отношение "многие ко многим", мы можем как-то получить доступ к пользователю, но я не уверен.

Вы можете посчитать, сколько раз myuser понравилось сообщение с:

myuser.blog_posts.count()

поэтому, если вы хотите сделать это для вошедшего пользователя, мы можем работать с:

context['amount_of_user_likes'] = self.request.user.blog_posts.count()
Вернуться на верх