在App Engine NDB documentation中,有以下内容:
FlexEmployee.query(FlexEmployee.location == 'SF')
如何首先评估“FlexEmployee.location =='SF'”并将布尔结果传递给query()?
答案 0 :(得分:2)
诀窍是基类ndb.Property
class会覆盖__eq__
方法,因此它不会返回布尔值,而是返回传递给实际查询的FilterNode类。
因此,在调用query
之前评估 ,但该评估的结果不是布尔值。
答案 1 :(得分:1)
FlexEmployee.location
返回的对象定义了一个不返回布尔值的__eq__
方法 - 它返回一个表示表达式“employee.location =='SF'”的过滤器对象。查询方法使用那些在构建它在底层存储上运行的查询时传入的过滤器对象。
property class also defines the magic methods,您可以在这些表达式中使用>,<,> =,< =和!=。