对于有这个问题的人,与very latest SQLAlchemy这一行为已得到修复。
原来的问题:
我有越来越协会代理正确更新的问题。
但随着该行改变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>]
但清除做奇怪的事情。从关联代理列表中删除,如下所示:
>>> rory.keywords.remove(chicken)
由于SA试图将其中一个外键列设置为null,因此会导致完整性错误。
这样做:
>>> rory.user_keywords.remove(rory.user_keywords[0])
结果在此:
>>> chicken.users
[None]
我错过了一些东西很明显,不是吗?
谢谢堆zzzeek。 –