[英]Filter many to many field in Django model
我在Django应用中有以下2个模型:
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
。
这是在Django中过滤多语言的正确方法
articles = Article.objects.filter(tags__in=[2])
要么
tags = Tag.objects.filter(pk=2)
articles = Article.objects.filter(tags__in=tags)
采用
articles = Article.objects.filter(tags__id=2)
或者,如果您也需要检索Tag
实例,
tag = Tag.objects.get(id=2)
articles = tag.article_set.all()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.