代码之家  ›  专栏  ›  技术社区  ›  Ahmad Siavashi

SQLAlchemy:按成员列表中的对象筛选

  •  0
  • Ahmad Siavashi  · 技术社区  · 6 年前

    考虑以下几类,

    class Person:
        id
        name
        jobs
    
    class Job:
        name
        person
        person_id (FK)
    

    哪里 Person.jobs 指班级 Job 物体。现在我要执行以下查询,

    # for a given person p
    Job.query.filter(Job.notin_(p.jobs))
    

    有可能吗 炼金术 ?

    请不要说我不想写 Job.query.filter(Job.person_id != p.id) .

    1 回复  |  直到 6 年前
        1
  •  0
  •   TonyMoutaux    6 年前

    不!

    作为文件 about in_ explains ,从SQLAlchemy的1.2版开始,您不能有object的实例列表,只能有:

    • ID列表
    • 空列表
    • 选择
    • 绑定参数

    从1.2版开始,只有您所说的“不想要”才是正确答案:

    Job.query.filter(Job.id.notin_([j.id for j in person.jobs]))