sqlalchemy - 根据孩子的孩子过滤

时间:2012-06-15 14:07:41

标签: sqlalchemy

我有三个类:PurchaseOrder,PurchaseOrderLine,Item

PurchaseOrder子项是与Item相关的PurchaseOrderLine。

pos = DBSession.query(m_po.PO).filter(or_(
            m_po.PO.number == query,
            m_po.POLine.item.code == query
        )).join(m_po.POLine).join(m_im.Item)

给我......

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object has an attribute 'code'

1 个答案:

答案 0 :(得分:1)

假设:

m_po = PurchaseOrder
m_pol = PurchaseOrderLine
m_it = Item

并且关系是在这些之间定义的,你应该能够实现如下(未经测试):

pos = (DBSession.query(m_po.PO).
    join(m_pol, m_po.POLine).
    join(m_it, m_pol.Items).
    filter(or_(
        m_po.PO.number == query,
        m_it.code == query,
    ))

注意:我对代码中的m_im代表感到有些困惑。