2012-06-15 2 views
0

J'ai trois classes: PurchaseOrder, PurchaseOrderLine, pointsqlalchemy - Filtrage par enfant de l'enfant

enfants purchaseOrder sont PurchaseOrderLine qui est lié à l'élément.

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) 

me donne ...

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

Répondre

1

Supposant:

m_po = PurchaseOrder 
m_pol = PurchaseOrderLine 
m_it = Item 

et que les relations sont définies entre ceux-ci, vous devriez être en mesure d'atteindre cet objectif de la manière suivante (non testé) :

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, 
    )) 

Note: je suis un peu confus ce m_im dans votre code signifie.

+0

m_po, m_im ou les modules dans lesquels se trouvent les classes. M_po (commande d'achat de module), m_im (gestion d'inventaire de module). J'aurais dû expliquer mieux de toute façon votre réponse m'a donné ce que je cherchais merci! – Ominus

Questions connexes