通过orm的django子查询

时间:2010-08-04 11:42:52

标签: django orm subquery

我有模特:

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 个答案:

答案 0 :(得分:1)

不要以SQL为例。考虑一下你想要的结果。

我真的不明白你为什么要在那个SQL中使用子查询。您想要做的就是找到所有ID为2的类别的网站。是吗?

如果是这样,你想要的是:

Site.objects.filter(category__id=2)