#django #django-queryset
#django #django-queryset
Вопрос:
У меня есть 2 модели:
Pages
------------
Page User
S500 John
Gimp John
WoW John
Subscriptions
------------
Page User
S500 John
Таким образом, поле страницы в модели Subs является моделью FK для страниц. Я пытаюсь вернуть набор запросов, который будет отображать все страницы, принадлежащие Джону, у которого нет подписки, принадлежащей ему.
Я попробовал что-то вроде:
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 запрос?
Ответ №1:
pages = Page.objects.filter(user='John').exclude(subscriptions__user="John")
Ответ №2:
Вы можете сделать это немного более напрямую, используя обратное направление вашего внешнего ключа. Если вы не установили reverse_name
, я думаю, это должно выглядеть так
pages = Page.objects.filter(user='John').filter(subscriptions_set=None)