Django: возвращение набора запросов с неперекрывающимися значениями в 2 моделях - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть 2 модели:

Pages
------------
Page    User
S500    John
Gimp    John
WoW     John

Subscriptions
------------
Page    User 
S500    John

Таким образом, поле Page в модели Subs является моделью FK to Pages. Я пытаюсь вернуть набор запросов, который отобразит все страницы, принадлежащие Джону, для которых у нет подписки, принадлежащей ему.

Я пробовал что-то вроде:

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])

, который работает, но как мне объединить его в 1 запрос?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011
pages = Page.objects.filter(user='John').exclude(subscriptions__user="John")
0 голосов
/ 03 ноября 2011

Вы можете сделать это немного напрямую, используя обратное направление вашего внешнего ключа.Если вы не установили reverse_name, я думаю, это должно выглядеть как

pages = Page.objects.filter(user='John').filter(subscriptions_set=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...