我有以下模特:
{fileReference.properties.width}
我理解
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50), unique=True)
email = Column(String(120), unique=True)
password = Column(String(12))
balance = Column(Float())
inventory = relationship("Inventory", primaryjoin="and_(User.id==Inventory.user_id, BaseGood.id==Inventory.basegood_id)", back_populates="user")
class Inventory(Base):
__tablename__ = 'inventory'
id = Column(Integer, primary_key=True)
basegood_id = Column(Integer, ForeignKey('basegoods.id'))
producables_id = Column(Integer, ForeignKey('producables.id'))
user_id = Column(Integer, ForeignKey('users.id'))
basegood = relationship('BaseGood', backref='basegoods', lazy="joined")
user = relationship("User")
class Producable(Base):
__tablename__ = 'producables'
id = Column(Integer, primary_key=True)
name = Column(String(50), unique=True)
price = Column(Float)
time = Column(Integer)
blueprint = relationship('BaseGood', secondary='blueprints', backref='producables', lazy="joined")
class BaseGood(Base):
__tablename__ = 'basegoods'
id = Column(Integer, primary_key=True)
name = Column(String(50), unique=True)
initprice = Column(Float)
price = Column(Float)
producable = relationship('Producable', secondary='blueprints', backref='basegoods', lazy="joined")
应该是一样的。但我怀疑我必须在这里加入一些。
所以,当我现在打电话给inventory = relationship("Inventory", backref='inventory', lazy='joined')
时,我会收到User.query.get(1).inventory
个对象的集合。然后,我可以分别拨打Inventory
或.basegood
。那不是我需要的。
我想要的是.producable
和BaseGood
个对象的集合。我想这里需要应用魔法。
Producable
但是我无法找到合适的联接来实现这一目标。
任何提示都表示赞赏。 TIA