首页 > 解决方案 > 基于 django 中一对多关系的字段连接过滤模型

问题描述

假设我有一些这样定义的模型:

Class Document(models.Model):
    pass

Class Paragraph(models.Model):
    text = models.CharField(max_length=2000)
    document = models.ForeignKey(Document, related_name="paragraphs")

我想找到所有在其任何段落文本字段中包含“foo”一词的文档。

就像是:

Document.objects.annotate(text=[Concatenation of all paragraphs text]).filter(text__icontains='foo')

我将如何以 Django 的方式解决这个问题,而不是编写直接的 SQL 查询。

标签: djangopython-3.x

解决方案


这个怎么样:

queryset = Paragraph.objects.filter(text__icontains='foo')

text = ''.join(obj.text for obj in queryset)

推荐阅读