使用动态属性名称调用GAE NDB查询

时间:2014-12-22 05:02:55

标签: python google-app-engine

Google AppEngine NDB查询是奇怪的野兽。 说我有一个类车(和ndb实体)的车 具有颜色和重量属性。 我能做到

Car.query(Car.color == "blue")

我从未在这种"函数调用"上看到任何Python 2文档。 有多少参数被传递?逻辑上它将是一个 这是一个布尔,但显然是"查询"可以找到来源 该参数的代码并获得Car.color,==和" blue"。 开发人员是否可以定义这些功能, 或者这是一些编译器破解?

我真正的问题是我有一个用户输入对话框 班级的字段(" Car"在这种情况下) 属性("颜色"在这种情况下) 和值,("蓝色"在这种情况下)。 如何构造和调用接受这些输入的查询?

1 个答案:

答案 0 :(得分:4)

这是由python magic methods完成的,您的示例使用__eq__

要构建查询,您可以使用以下内容:

Car.query(getattr(Car, 'color') == 'red')

请务必通过致电hasattr(Car, 'color')

来检查属性是否存在