Нет необходимости использовать здесь подзапросы , мы можем просто выполнить объединения, просматривая внешние ключи (это обычно обозначается двумя последовательными подчеркиваниями __
в Django).
Если вы хотите, чтобы все Component
, принадлежащие System
, принадлежащему Project
, принадлежащему user
, мы можем запросить это с помощью:
from django.db.models import F
Component.objects.filter(
<b>system__project__user=someuser</b>
).annotate(
<b>system_name=F('system__name'),
project_name=F('system__project__name')</b>
)
с помощью someuser
пользователь, которого вы хотите фильтровать.
Компоненты в этом наборе запросов будут иметь дополнительные атрибуты system_name
и project_name
, которые содержат имя системы и проекта соответственно.