2016-09-17 5 views
2

Когда хотят загружая отношения ребенка, как я могу загрузить только несколько столбцов родительской модели:SQLAlchemy load_only на родительской модели

Это работает, если мне нужно только title столбец chapters модели:

session.query(Book)\ 
    .options(joinedload('chapters').load_only('title')) 

Но это выдает ошибку:

session.query(Book.author)\ 
    .options(joinedload('chapters').load_only('title')) 

Query has only expression-based entities - can't find property named 'chapters'.

другими словами, я Вань т этот SQL в синтаксисе ОРМ:

SELECT 
    books.author, 
    chapters.title, 
FROM 
    books JOIN chapters ON book.id = chapters.book_id 

ответ

3

Сообщение об ошибке говорит, что вы только выбрать Book.author, вместо экземпляров Book. Где находится chapters, если все это возвращается, это список строк (для author).

Вы можете сделать:

session.query(Book.author, Chapter.title).select_from(Book).join(Book.chapters) 

или

session.query(Book).options(load_only("author"), joinedload("chapters").load_only("title")) 
+0

Большое спасибо. – norbertpy

Смежные вопросы