通过 orm 的 django 子查询
Posted
技术标签:
【中文标题】通过 orm 的 django 子查询【英文标题】:django subquery via orm 【发布时间】:2010-08-04 11:42:52 【问题描述】:我有模型:
class Site(models.Model):
profile = models.ForeignKey(User)
class Profile(models.Model):
blacklist = models.ManyToManyField(Site)
我怎样才能通过 django orm 进行等效的查询?
SELECT * FROM site WHERE 2 NOT IN (SELECT site_id FROM profile_blacklist WHERE profile_site.profile_id=site.profile_id)
我需要某种黑名单过滤器。每个站点都有用户(配置文件)。该用户有网站黑名单。我确实搜索了 id=2 的站点,例如。我需要网站,女巫所有者在黑名单中没有 2 号网站。
【问题讨论】:
【参考方案1】:不要用 SQL 来思考。想想你想要什么结果。
我真的不明白你为什么要在那个 SQL 中使用子查询。看来您要做的是找到所有 ID 为 2 的类别的网站。对吗?
如果是这样,你想要的是:
Site.objects.filter(category__id=2)
【讨论】:
抱歉,我的第一个问题描述不好。我编辑主题。以上是关于通过 orm 的 django 子查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django ORM 的 From 子句中编写子查询