Cập nhật:SQLAlchemy hai chiều Mối quan hệ gắn Proxy
Đối với bất cứ ai có vấn đề này, với very latest SQLAlchemy hành vi này đã được sửa.
gốc vấn đề:
Tôi gặp một vấn đề với nhận proxy hiệp hội để cập nhật một cách chính xác.
Sử dụng các mô hình ví dụ ở đây: http://docs.sqlalchemy.org/en/rel_0_7/orm/extensions/associationproxy.html#simplifying-association-objects
Nhưng thay đổi UserKeyword với dòng này:
keyword = relationship("Keyword", backref=backref("user_keywords", cascade="all, delete-orphan"))
và thêm này để theo từ khóa:
users = association_proxy('user_keywords', 'user')
Vì vậy, một trường hợp từ khóa có một danh sách người dùng.
Các công trình sau đây như mong đợi:
>>> 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>]
Nhưng ñuoåi làm những điều kỳ lạ. Xóa khỏi danh sách proxy liên kết như vậy:
>>> rory.keywords.remove(chicken)
Gây ra lỗi toàn vẹn khi SA cố gắng đặt một trong các cột khóa ngoài thành rỗng.
Việc làm này:
>>> rory.user_keywords.remove(rory.user_keywords[0])
Kết quả trong này:
>>> chicken.users
[None]
tôi đã bỏ lỡ một cái gì đó rõ ràng có phải không?
Cảm ơn heaps zzzeek. –