python – 如何在SQLAlchemy中指定一个条件,其中一个条件要求列为空?

不确定这个问题的正确标题应该是什么.我有以下架构:

>事项与WorkItems有一对多的关系.
> WorkItem与LineItems有一对一(或一零)关系.

我试图在Matters和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
)

抛出:

AttributeError: '_Null' object has no attribute 'table'

这似乎是说,primaryjoin中的第二个子句返回一个类型为_Null的对象,但它似乎期待具有“table”属性的东西.

这似乎对我来说应该是非常简单的,我错过了一些明显的东西吗?

更新

答案是将primaryjoin行更改为:

primaryjoin = "and_(Matter.id == WorkItem.matter_id, WorkItem.line_item_id == None)"

最佳答案 尝试使用and_ as并且不会重载:

and_((Matter.id == WorkItem.matter_id), (WorkItem.line_item_id == None))
点赞