在Django ORM中执行Anti Join

时间:2014-10-27 22:19:21

标签: django django-models django-orm

我有两种模式:

class Note(model):
    <attribs>

class Permalink(model):
    note = foreign key to Note

我想执行一个查询:获取所有没有永久链接的笔记。 在SQL中,我会这样做:

SELECT * FROM Note WHERE id NOT IN (SELECT note FROM Permalink); 

想知道如何在ORM中执行此操作。

编辑:我不想将所有固定链接都放到我的应用程序中。相反,它更喜欢在DB中作为查询运行。

2 个答案:

答案 0 :(得分:5)

您应该可以使用此查询:

Note.objects.filter(permalink_set__isnull=True)

答案 1 :(得分:2)

你可以使用:

 Note.objects.exclude(id__in=Permalink.objects.all().values_list('id', flat=True))