构建一个针对ReferenceProperty有条件的GQL查询(用于Google App Engine)
假设我有一个这样的模型:
class Schedule(db.Model):
tripCode = db.StringProperty(required=True)
station = db.ReferenceProperty(Station, required=True)
arrivalTime = db.TimeProperty(required=True)
departureTime = db.TimeProperty(required=True)
现在假设我有一个名为 foo
的变量,它里面存储了一个 Station 对象。
我该如何写一个 GQL 查询,来获取所有与 foo
这个 Station 对象相关联的 Schedule 对象呢?
这是我最好的尝试(虽然不正确)来构建这样的查询:
myQuery = "SELECT * FROM Schedule where station = " + str(foo.key())
再说一遍,foo
是一个 Station 对象
2 个回答
7
更简单的方法是通过在引用属性中添加 'collection_name' 字段来改变模型的定义:
station = db.ReferenceProperty(Station, required=True, collection_name="schedules")
这样你就可以直接使用:
foo.schedules
每当你想获取所有车站的时间表时,就可以这样做。
10
你不应该通过字符串替换的方式把用户数据放进GQL字符串里。GQL支持参数替换,所以你可以这样做:
db.GqlQuery("SELECT * FROM Schedule WHERE station = $1", foo.key())
或者,使用查询接口:
Schedule.all().filter("station =", foo.key())