python - 在 Django 模型中过滤多对多字段

标签 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

最佳答案

这是django过滤manytomany的正确方法

articles = Article.objects.filter(tags__in=[2])

tags = Tag.objects.filter(pk=2)
articles = Article.objects.filter(tags__in=tags)

关于python - 在 Django 模型中过滤多对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086192/

相关文章:

python - 如何使用 Python 从文本文件中删除回车符?

django - “chartit”不是有效的标签库

django - 在 django 中提供文件(pdf 或 word doc)的可下载链接

python - 如何在 Django 中将行调整为列?

python - 提交后django清除表单字段

python - 类似类的通用导入语句

python - python 中的单个 var 赋值和多个 var 赋值之间有什么不同的行为吗?

python - 如何解决单元测试导入错误

python - 比较 Pandas Dataframe 的匹配行和列的差异

python - Django:将 "Signals"与 "dispatch_uid"一起使用时如何防止重复?