Django查询数据库并向特定对象组添加用户

Django查询数据库并向特定对象组添加用户,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我试图查询我的博客模型,这样它将返回一篇博客文章的赞数,其中包含title=example和name=something class Post(models.Model): title = models.CharField(max_length=20) name = models.CharField(max_length=100) content = models.CharField(max_length=100) likes = models.ManyToMa

我试图查询我的博客模型,这样它将返回一篇博客文章的赞数,其中包含
title=example
name=something

class Post(models.Model):

    title = models.CharField(max_length=20)
    name = models.CharField(max_length=100)
    content = models.CharField(max_length=100)
    likes = models.ManyToManyField(User, blank=True, related_name='likes')
现在,我正在尝试使用以下方法获取模型中的喜欢数:

   def average_voting(self):
        likes = Post.objects.filter(title=self.title,name=self.name).likes.count()
        return likes
对于添加我正在使用的用户:

Post.objects.filter(title=“example”,name=“something”).likes.add(用户

但是我的线路坏了,我不知道我做错了什么

编辑 基本上,实现这一点的for循环是:

我的意图是,当用户喜欢具有相同标题的帖子时,无论是谁添加了该帖子,所有具有相同标题的帖子的喜欢数量都会发生变化

我还想知道如何检查我可以使用的帖子中是否存在用户:

Post.objects.get(title=self.title,name=self.name).likes.filter(users=user.id).exists():
如果在我的用户模型中,我有多对多关系:

posts = models.ManyToManyField('home.Post',related_name='profiles')

因此,我基本上是想看看用户以前是否喜欢过具有该标题的帖子。

您可以通过以下方式计算喜欢的次数:

class Post(models.Model):
    title = models.CharField(max_length=20)
    name = models.CharField(max_length=100)
    content = models.CharField(max_length=100)
    likes = models.ManyToManyField(User, blank=True, related_name='likes')

    def num_likes(self):
        return self.likes.count()
return Post.likes.through.objects.filter( post__title=self.title, post__name=self.name, user=myuser ).exists() 编辑:如果存在多个标题相同的
帖子
s,您可以使用以下工具进行查询:

def num_likes(self):
    return Post.likes.through.objects.filter(post__title=self.title, post__name=self.name).count()
def num_likes(self):
返回Post.likes.through.objects.filter(Post\uu title=self.title,Post\uu name=self.name).count()
或者,您可以通过以下方式检查用户是否存在于LIKE中:

class Post(models.Model):
    title = models.CharField(max_length=20)
    name = models.CharField(max_length=100)
    content = models.CharField(max_length=100)
    likes = models.ManyToManyField(User, blank=True, related_name='likes')

    def num_likes(self):
        return self.likes.count()
return Post.likes.through.objects.filter( post__title=self.title, post__name=self.name, user=myuser ).exists() 返回Post.likes.through.objects.filter( post_uutitle=self.title, post\uu name=self.name, user=myuser
).exists()感谢您的回复。对于计数,让我们假设我有一个标题相同的课程,我想计算所有标题相同的课程,然后返回(这就是我将用户添加到具有相同标题的帖子对象的原因。这意味着如果帖子的内容不同,但标题相同,则会返回相同数量的喜欢。我将添加一个循环函数来演示我的意思。我理解这一点,但现在我似乎无法检查我的用户是否存在于具有特定标题的帖子中。)欠你的response@ashes999:你可以。尽管如此,我不确定多个帖子加起来会“发生”拥有相同的标题是个好主意。哦,好吧,我明白了,不管我的多对多关系是在用户模型中建立的,我仍然可以在我的帖子对象中过滤它?@ashes999:course=post?课程对象到底从哪里来?是的,你可以,例如,你可以使用
post.objects.filter(likes=my_User)进行过滤