Vous ne savez pas quel devrait être le bon titre pour cette question. J'ai le schéma suivant:Comment spécifier une relation dans SQLAlchemy où une condition requiert une colonne null?
- Les sujets ont une relation un-plusieurs à WorkItems.
- Les éléments de travail ont une relation one-one (ou un-zéro) avec LineItems.
Je suis en train de créer la relation entre les questions et WorkItems
Matter.unbilled_work_items = orm.relation(WorkItem,
primaryjoin = (Matter.id == WorkItem.matter_id) and (WorkItem.line_item_id == None),
foreign_keys = [WorkItem.matter_id, WorkItem.line_item_id],
viewonly=True
)
Ce Lancers:
AttributeError: '_Null' object has no attribute 'table'
Cela semble dire que la deuxième clause du primaryjoin retourne un objet de type _Null, mais il semble s'attendre à quelque chose avec un attribut "table".
Cela semble être assez simple pour moi, est-ce que je manque quelque chose d'évident?
Mise à jour
La réponse est de changer la ligne primaryjoin
à:
primaryjoin = "and_(Matter.id == WorkItem.matter_id, WorkItem.line_item_id == None)"
Le '' et l'opérateur est surchargé, vous pouvez aussi écrire (...) et (...) – codeape
Le problème avec et est qu'il se lie plus forte que ==. Donc 'x == 'a' & y == 'b'' deviendrait' (x == (' a '& y)) ==' b'' – ThiefMaster
Oui, c'est pourquoi vous avez besoin de la parenthèse: '(x == 'a') & (y == 'b')' – codeape