アップデート:この動作が修正されましたvery latest SQLAlchemyで、この問題を持つ人のためSQLAlchemyの双方向リレーションシップの関連プロキシ
、。
オリジナル問題:
私が正しく更新するために、関連のプロキシを取得して問題が発生しています。 http://docs.sqlalchemy.org/en/rel_0_7/orm/extensions/associationproxy.html#simplifying-association-objects
しかし、このラインでUserKeywordを変更:
keyword = relationship("Keyword", backref=backref("user_keywords", cascade="all, delete-orphan"))
とキーワードにこれを追加することを:
users = association_proxy('user_keywords', 'user')
だから、キーワードインスタンスがのリストがあり、ここで例のモデルを使用して
ユーザー。
予想通り、次の作品:
>>> rory = User("rory")
>>> session.add(rory)
>>> chicken = Keyword('chicken')
>>> session.add(chicken)
>>> rory.keywords.append(chicken)
>>> chicken.users
[<__main__.User object at 0x1f1c0d0>]
>>> chicken.user_keywords
[<__main__.UserKeyword object at 0x1f1c450>]
しかし、削除は奇妙なことを行います。そのような関連プロキシリストからの削除:SAはnullに外部キー列の1つを設定しようとして
>>> rory.keywords.remove(chicken)
は、整合性エラーが発生します。私は何かを明らかに見逃している
>>> chicken.users
[None]
は私が持っていない。この中
>>> rory.user_keywords.remove(rory.user_keywords[0])
結果:
これをやって?
ありがとうヒープzzzeek。 –