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

  • 事务与 WorkItem 有一对多的关系。
  • WorkItem 与 LineItem 具有一对一(或一零)关系。

  • 我正在尝试在 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_ 因为 and 没有重载:

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

    关于python - 如何在 SQLAlchemy 中指定一个关系,其中一个条件要求一列为空?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2863786/

    10-13 06:32