2016-09-17 6 views
2

子の関係をロードする熱心で、どのように私は親モデルのいくつかの列を読み込むことができます。SQLAlchemyのはLOAD_ONLY親モデル

私だけchaptersモデルのtitle列必要がある場合、これは動作します:

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'.

ORMの構文では、このSQL T:

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

答えて

3

エラーメッセージは、あなただけの代わりBookのインスタンスで、Book.authorを選択していると言います。 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

関連する問題