inşa:Flask-SQLAlchemy 3 modeller arasında katılıp bir Tablo I 3 modelleri var
class Customer(Model):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
statemented_branch_id = Column(Integer, ForeignKey('branch'))
...
class Branch(Model):
__tablename__ = 'branch'
id = Column(Integer, primary_key=True)
...
class SalesManager(Model):
__tablename__ = 'sales_manager'
id = Column(Integer, primary_key=True)
branches = relationship('Branch', secondary=sales_manager_branches)
Ve Tablo yapısı: Bir SalesManager
için tüm Customers
elde edebilmek istiyorum
sales_manager_branches = db.Table(
'sales_manager_branches',
Column('branch_id', Integer, ForeignKey('branch.id')),
Column('sales_manager_id', Integer, ForeignKey('sales_manager.id'))
)
Bu, Branch
'un herhangi birindeki statemented_branch_id
numaralı tüm Müşterilerin SalesManager.branches
ilişkisini ifade ettiği anlamına gelir.
branch_alias = aliased(Branch)
custs = Customer.query.join(branch_alias, SalesManager.branches).\
filter(Customer.statemented_branch_id == branch_alias.id)
besbelli doğru değildir:
Benim sorgu böyle küçük bir şey arıyor.
SalesManager
için tüm Customers
'u nasıl alabilirim?
Güncelleme
Ben çalıştığınızda:
*** OperationalError: (OperationalError) ambiguous column name: branch.id u'SELECT
customer.id AS customer_id, customer.statemented_branch_id AS
customer_statemented_branch_id \nFROM customer JOIN branch ON branch.id
customer.statemented_branch_id, "SalesManager" JOIN sales_manager_branches AS
sales_manager_branches_1 ON "SalesManager".id = sales_manager_branches_1.sdm_id JOIN
branch ON branch.id = sales_manager_branches_1.branch_id \nWHERE "SalesManager".id = ?'
(1,)
Sen aliased'' Branch' 'gerekir ve her iki takma ad olmadan. –
Teşekkürler Sean, aşağıdaki cevabımda yaptığım gibi bitirdim. Cevabınızı/yorumlarınızı yükselttim, ancak elimden geldiğince kendimi kabul edeceğim. –