KitKit
KitKit

Reputation: 9583

Count Object in Models Django

I have a problem with creating a modelfield which Count number of people who like an article. I have class Like:

class Reaction(models.Model):
    user = models.ForeignKey(User)
    article = models.IntegerField(null=True, blank=True)
    date = models.DateTimeField(auto_now_add=True, null=True)

and class Article:

from api.reactions.models import Reaction
class Article(models.Model):    
    user = models.ForeignKey(User)
    post = models.TextField()
    likes = models.IntegerField(default=0)

    def __str__(self):
        return self.post

    def calculate_likes(self):
        likes = Reaction.objects.count(article=self.pk)
        self.likes = likes
        self.save()
        return self.likes

But likes wont be counted. What's wrong with this? Please help me. Thanks!

Upvotes: 0

Views: 690

Answers (1)

Samuel Omole
Samuel Omole

Reputation: 185

def get_likes(self):
        return self.likes.all().count()

this should basically be it, you don't need to point a model to an instance of itself, creating a reaction class is overkill. But if you are still going for it instead of:

likes = Reaction.objects.count(article=self.pk)

Try:

likes = Reaction.objects.filter(article=self.pk).count()

Upvotes: 1

Related Questions