下面是我定義我的籃子,有很多「項目」的關係:SQLAlchemy的,一對多的名單一直下降到一個對象後提交
class Basket(Base):
__tablename__ = 'basket'
id = Column(Integer, primary_key=True)
items_id = Column(Integer, ForeignKey('item.id'))
items = relationship("Item", uselist=True)
class Item(Base):
__tablename__ = 'item'
id = Column(Integer, primary_key=True)
name = Column(String)
但是當我測試它,對於一些在會議提交後,我的basket.items只保留一個項目。如果我添加更多,然後再次提交,我的列表將保持在一個。
我不明白爲什麼。這是我的測試:
>>> basket = Basket()
>>> s = session()
>>> s.add(basket)
>>> banana = Item(name="banana")
>>> orange = Item(name="orange")
>>> s.add(banana)
>>> s.add(orange)
>>> s.commit()
>>> basket.items.append(banana)
>>> basket.items.append(orange)
>>> basket.items
[<database.declarative.Item object at 0x10e4c7790>, <database.declarative.Item object at 0x10e4c7810>]
>>> s.commit()
>>> basket.items
[<database.declarative.Item object at 0x10e4c7810>]
是的,它的工作原理。現在你說了,似乎很明顯。我的錯誤是認爲控制層在工作方面是工作的,並且決不允許一次將多個項目添加到項目列表中,如發生該情況時拋出異常。所以當提交完成時,會執行更改和更正。感謝您的幫助 ! –