如何在Django中使用ManyToManyField关系计算对象?

时间:2016-04-08 07:03:18

标签: django django-models

我的 models.py 是这样的:

class Tag(models.Model):
    name = models.CharField(max_length=255, unique=True)

class Article(models.Model):
    title = models.CharField(max_length=255)
    body = models.TextField()
    tags = models.ManyToManyField(Tag, related_name='article_tags')

让我们说,我有一个名为“电影评论”的标签,如何获得与此标签有关系的文章数量?和计数一样。

感谢。

3 个答案:

答案 0 :(得分:2)

有两种方法可以获取使用特定标记的文章(下面的示例中为your_tag):

  • 使用Article上的过滤:Article.objects.filter(tags=your_tag)
  • 或使用相关关系:your_tag.article_tags.all()

完成后,您只需使用.count()即可获得返回的行数。

答案 1 :(得分:1)

使用此查询..

Article.objects.filter(tags__name='Movie Review')

获得点数

Article.objects.filter(tags__name='Movie Review').count()

答案 2 :(得分:1)

您可以使用Django' .count()

tag = Tag.objects.get(name='Movie Review')
article_count = tag.article_tags.all().count()