2017-11-23 4 views
0

私はmodelfieldを作成する際に問題があります。これは記事を好きな人の数をカウントします。モデルDjangoでオブジェクトをカウント

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

と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 

をしかし、文句を言わないカウントされるのが好き。 これは何が問題なのですか?私を助けてください。ありがとう!

+0

第四の最後の行にここで何をPKれますか? – Ahtisham

+0

記事ID、@Doda –

+0

記事と反応の間に関係はありませんか? –

答えて

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

これは基本的には、モデルをそれ自身のインスタンスにポイントする必要はありません。反応クラスを作成することは過度です。 しかし、あなたはまだの代わりにそれのために行くされている場合:

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

試してみてください。

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

私はあなたの3つのソリューションをすべて試してみましたが、それはうまくいかないのです。 use defは返り値ではありません。解決策2と3、それはエラーになりました:名前 '自己'が定義されていません –

+0

あなたは 'likes = Reaction.objects.filter(article__1contains = self.id).count()'を試すことができます –

関連する問題