在查询集中按对象排除

3 投票
1 回答
3165 浏览
提问于 2025-04-17 21:56

我想从我的查询集中排除一些对象,想知道怎么把一个对象列表传给Django的 exclude() 方法。

这是我目前的做法:

pages = [page1, page2] # page1 and page2 are Page objects
Page.objects.filter(site=site).exclude(pages)

我可以用 exclude(pk__in=[p.pk for p in pages]) 这样做,但感觉不太自然。有没有更好的方法可以指定要从上面的查询集中排除的对象列表呢?

1 个回答

3

看起来我的方法到目前为止是最好的之一。以下是我最终得到的结果:

pages = [page1, page2] # page1 and page2 are Page objects
Page.objects.filter(site=site).exclude(pk__in=[p.pk for p in pages])

撰写回答