Django:返回在两个模型中具有非重叠值的查询集
我有两种型号:Django:返回在两个模型中具有非重叠值的查询集,django,django-queryset,Django,Django Queryset,我有两种型号: Pages ------------ Page User S500 John Gimp John WoW John Subscriptions ------------ Page User S500 John 所以Subs模型中的页面字段是一个FK-to-Pages模型。我正在尝试返回一个查询集,该查询集将显示属于John的所有页面,而没有属于John的订阅 我试过这样的方法: fbpages = Page.objects.filter
Pages
------------
Page User
S500 John
Gimp John
WoW John
Subscriptions
------------
Page User
S500 John
所以Subs模型中的页面字段是一个FK-to-Pages模型。我正在尝试返回一个查询集,该查询集将显示属于John的所有页面,而没有属于John的订阅
我试过这样的方法:
fbpages = Page.objects.filter(user='John').exclude(id__in=[Page.id for Page in Page.subscriptions.filter(Page=Page)])
current_subs = Subscriptions.objects.filter(user='John')
pages = Page.objects.filter(user='John').exclude(id__in=[subs.Page.id for subs in current_subs])
我想我已经很接近了,但我不确定我的问题出在哪里
我做了这样的事情:
fbpages = Page.objects.filter(user='John').exclude(id__in=[Page.id for Page in Page.subscriptions.filter(Page=Page)])
current_subs = Subscriptions.objects.filter(user='John')
pages = Page.objects.filter(user='John').exclude(id__in=[subs.Page.id for subs in current_subs])
但如何将其合并到一个查询中?您可以使用外键的相反方向更直接地执行此操作。如果您没有设置
reverse\u name
,我想应该是这样的
pages = Page.objects.filter(user='John').filter(subscriptions_set=None)