在 sqlalchemy 过滤器中使用 and_ 不起作用

时间:2021-06-14 15:06:15

标签: python-3.x sqlalchemy orm

使用 notlike 过滤器时,此语句有效:

    result = self.session.query(PropMetadata, FloorPlan).join(FloorPlan, 
        FloorPlan.prop_metadata_id == PropMetadata.id).\
            filter(FloorPlan.rent_range.notlike('%Call%'))

使用 == 过滤器时,此语句有效(floorplan 正在传递到我的函数中):

result = self.session.query(PropMetadata, FloorPlan).join(FloorPlan, 
    FloorPlan.prop_metadata_id == PropMetadata.id).\
        filter(FloorPlan.layout == floorplan)

and_ 结合使用时,出现此错误:

result = self.session.query(PropMetadata, FloorPlan).join(FloorPlan, 
    FloorPlan.prop_metadata_id == PropMetadata.id).\
        filter(and_(
            FloorPlan.rent_range.notlike('%Call%'),
            FloorPlan.layout == floorplan
    ))

sqlalchemy.exc.ArgumentError: Mapped instance expected for relationship
comparison to object.   Classes, queries and other SQL elements are not 
accepted in this context; for comparison with a subquery, use 
FloorPlan.prop_metadata.has(**criteria).

我该如何解决这个问题?

0 个答案:

没有答案