如何在 django 中检查用户是否已经喜欢博客文章

Sho*_*lam 2 django django-templates django-models

我想通过验证用户是否已经喜欢这篇文章的查询来设置我的喜欢按钮。如果用户已经喜欢这个,则按钮将为“不喜欢”,否则为“喜欢”。我找不到进行查询的正确方法以及如何在我的模板中实现它。提前致谢。

我的型号:

class Tweet(models.Model):
    added = models.DateTimeField(auto_now_add=True)
    tweeter = models.ForeignKey(UserProfile, related_name='user_tweets')
    content = models.TextField(max_length=140)
    likes = models.IntegerField(default=0)

    def __unicode__(self):
        return self.content

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

    def approved_comments(self):
        return self.comments.filter(approved_comment=True)

class Like(models.Model):
    liker = models.ForeignKey(UserProfile, related_name='liked_user')
    liked_tweet = models.ForeignKey('Tweet', related_name='liked_post')
    liked_date = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return u'%s liked %s tweet' % (self.liker, self.liked_tweet)
Run Code Online (Sandbox Code Playgroud)

Raj*_*war 5

您可以简单地使用您正在验证的实例来查询Like模型。如果存在记录,则用户已经喜欢该推文。TweetUserProfile

样本:

is_liked = False
try:
    Like.objects.get(liked_tweet=tweet, liker=user)
    is_liked = True
except Like.DoesNotExist:
    pass
Run Code Online (Sandbox Code Playgroud)

  • ``is_liked = Like.objects.filter(liked_tweet=tweet, liker=user).exists()`` 似乎更具可读性。 (2认同)