1

次のような宣言型オブジェクトを使用しているとします。

class MyObject(DeclarativeBase):
   ...
   other_object_id = Column(Integer, ForeignKey('other_object.id'))
   other_object = relationship("OtherObject")
   ...

set_other_object_value必要に応じてを変更しother_object.value、のインスタンスを作成OtherObjectしてセッションに追加する便利なメソッドが必要だとします。

def set_other_object_value(self, value):
   if self.other_object is None:
      <create instance of OtherObject and associate with the session>
   self.other_object.value = value

OtherObject問題は、それを作成してセッションに関連付けるにはどうすればよいかということです。おそらく同等の質問: のインスタンス内から追加されたSessionのインスタンスにアクセスすることは可能ですか?MyObjectMyObject

4

1 に答える 1

4

使用object_session:

from sqlalchemy.orm.session import object_session
# ...

def set_other_object_value(self, value):
    if self.other_object is None:
        value = OtherObject(...)
    self.other_object.value = value
    object_session(self).add(value)

ただし、関係を適切に設定している場合は、新しいvalueものをセッションに追加する必要はありません。とにかくsqlalchemyそれを把握してデータベースに保存します。commit

于 2013-04-20T20:51:05.633 に答える