Собственно есть model.py (не важно какая) и в ней куча связанных таблиц (но все нормально, без петлей и дублирования, все более-менее нормализовано). И вот строится приметно такой запрос:
q=BlogPost.objects.\
order_by('-dPostDataCreate', 'kBlogAuthorUser__id').\
select_related()
print q.query
Который порождает SQL:
SELECT
`все-все-все-поля-из-всех-всех-всех-связанных-таблиц-через-запятую`
FROM prj_blogpost
INNER JOIN prj_ouruser ON ( prj_blogpost.kBlogAuthorUser_id = prj_ouruser.id )
INNER JOIN auth_user ON ( prj_ouruser.kDjangoUser_id = auth_user.id )
ORDER BY
prj_blogpost.dPostDataCreate DESC,
prj_blogpost.kBlogAuthorUser_id ASC
Как вы догадались в моделе часть таблиц связано через
ForeignKey с встроенным в
Django классом
User, но не это важно. А важно, что доступа в полям в связанных таблицах подступиться не получается. Т.е. что-то вроде вот такого:
for cnt in q:
print cnt.username
Порождает ошибку:
Exception Value: 'BlogPost' object has no attribute 'username'
И это справедливо, т.к. для того чтобы все работало нужно, чтобы ORM породил немного другой запрос:
SELECT
`все-все-все-поля-из-всех-всех-всех-связанных-таблиц-через-запятую`
FROM prj_blogpost
INNER JOIN prj_ouruser ON ( prj_blogpost.kBlogAuthorUser_id = prj_ouruser.id )
INNER JOIN auth_user ON ( prj_ouruser.kDjangoUser_id = auth_user.id )
GROUP BY
`все-все-все-поля-из-всех-всех-всех-связанных-таблиц-через-запятую`
ORDER BY
prj_blogpost.dPostDataCreate DESC,
prj_blogpost.kBlogAuthorUser_id ASC
Собственно вопрос заключается в том, как ORM заставить этот
GROUP BY
`все-все-все-поля-из-всех-всех-всех-связанных-таблиц-через-запятую` добавить к запросу?