我在Django应用程序中有这两个模型:
class Tag(models.Model):
name = models.CharField(max_length=100, blank=False, unique=True)
class Article(models.Model):
title = models.CharField(max_length=100, blank=True, default='')
tags = models.ManyToManyField(Tag, blank=True)
在我的观看中,我想过滤文章,只获取articles.tags
包含id == 2
标记的文章。我怎么能这样做?
我试过
tags = Tag.objects.filter(pk=2);
articles = Article.objects.filter(len(tags) > 0)
但我有这个错误'bool' object is not itterable
。
答案 0 :(得分:2)
这是在django中过滤manytomany的正确方法
articles = Article.objects.filter(tags__in=[2])
或
tags = Tag.objects.filter(pk=2)
articles = Article.objects.filter(tags__in=tags)
答案 1 :(得分:0)
使用
articles = Article.objects.filter(tags__id=2)
或者,如果您还需要检索Tag
实例,
tag = Tag.objects.get(id=2)
articles = tag.article_set.all()