私はこのように見えるマッパーをたくさん持っています:
mapper(Photo,photo_table, properties = { "locale": relation(PhotoContent, uselist=False, primaryjoin=and_(photo_content_table.c.photoId == photo_table.c.id, photo_content_table.c.locale == get_lang()), foreign_keys=[photo_content_table.c.photoId, photo_content_table.c.locale])
Pylonsにデプロイしたので、get_lang()関数は現在のセッションに基づいて「en」または「es」のいずれかを返す必要があります。
from pylons.i18n import get_lang
問題は、SAがコンパイル時にget_lang()によって返される結果との「ロケール」関係をコンパイルすることです。だから私がこのようなことをすると:
meta.Session.query(Photo).options(eagerload('locale')).get(id)
リレーションはget_lang()を呼び出しません。get_lang()の値がコンパイル時にあったものを使用するだけです。
動的なSQLAlchemyイーガーローダーを実装する方法を知っている人はいますか?これは私にとって命の恩人になるでしょう!