在Django模型中过滤多个到多个字段

时间:2015-10-12 16:43:41

标签: python django

我在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

2 个答案:

答案 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()