2012-06-15 3 views
0

У меня есть три класса: PurchaseOrder, PurchaseOrderLine, пунктSQLAlchemy - фильтрация на основе ребенка ребенка

PurchaseOrder дети являются 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

Предполагая:

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 в вашем коде обозначает.

+0

m_po, m_im или модули, в которых находятся классы. M_po (порядок покупки модуля), m_im (управление запасами модулей). Я должен был лучше объяснить, как ваш ответ дал мне то, что я искал благодаря! – Ominus

Смежные вопросы