我有一个带有以下 postgres db 表的 Django 应用程序:发布和标记
Publication {
title
tags
}
Tag {
title
}
Tag 和 Publication 具有多对多的关系。
我想做的是做一个和/或组合搜索:例如,假设我有四个标签:A、B、C、D。我想找到所有具有 A OR B 标签的出版物,并且一个与之关联的 C OR D 标签。例如,在搜索字段中,我可能会输入:(A || B) && (C || D)。换句话说,结果应该产生具有来自每个“或”对的至少一个标签的出版物。
我希望能够输入标签标题并返回出版物标题。
我尝试使用 Django 过滤器执行此操作,甚至昨天还问了这个问题:什么是执行 AND/OR 搜索 Django-Postgres 应用程序的有效方法?最后意识到做一个原始的续集查询可能更好。唯一的问题:我从来没有写过原始的续集声明。
我刚刚花了最后几个小时看这个问题:How to filter SQL results in a has-many-through relationship,并尝试将其应用于我的情况,但我太新手了,无法做到它。
给定我的模型,谁能告诉我如何构造这个查询?