SQLAlchemy 0.5 と Python 2.6.6 を使用しています。
association_proxy の作成者内で参照されるオブジェクトを選択または作成したいと考えています。私の問題は、これにはセッションが必要ですが、作成者のコールバックでこれを取得する場所がわかりません。
アソシエーション プロキシの作成者の 1 つで、オブジェクトが属するセッションを使用するにはどうすればよいですか?
私が試したこと、うまくいかないこと
を見つけましsession.object_session
たが、ORM オブジェクトの一部でない限り、コールバックにオブジェクトがありません。それが私のオブジェクトの一部である場合、呼び出し元はメソッドとして呼び出されません (最初の引数は、オブジェクトの参照ではなく、プロキシの値です):
class Event(ManagerBase):
# If association_proxy calls this, 'self' is the key, not the
# reference to the calling instance.
def _field_find_or_create(self, key, val):
session = session.object_session(self)
field = session.query(Field).filter_by(name=key).first()
if not field:
field = Field(name=key)
return EventFieldValue(field=field, value=val)
fields = association_proxy("field_values", "value",
creator=_field_find_or_create)
オブジェクト自体を Creators 関数に渡すことはできますか? この場合、このオブジェクトで object_session を呼び出すことができます。
私のプロジェクトは複数のセッションを使用しているため、作成者の実行時に具体的なセッションを決定する必要があります。