构建具有ReferenceProperty条件的GQL查询(对于Google App Engine)

时间:2009-05-12 10:06:19

标签: python google-app-engine gql

说我有以下型号:

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)

让我说我有一个存储在var foo中的Station对象。

如何组装一个GQL查询,该查询返回所有Schedule对象,并引用foo引用的Station对象?

这是我最好的(虽然不正确的)尝试形成这样的查询:

myQuery = "SELECT * FROM Schedule where station = " + str(foo.key())

再次foo电台对象

2 个答案:

答案 0 :(得分:10)

您不应使用字符串替换将用户数据插入GQL字符串。 GQL支持参数替换,因此您可以这样做:

db.GqlQuery("SELECT * FROM Schedule WHERE station = $1", foo.key())

或使用Query界面:

Schedule.all().filter("station =", foo.key())

答案 1 :(得分:7)

更容易做的是通过将'collection_name'字段添加到ReferenceProperty来更改模型定义:

  

station = db.ReferenceProperty(Station,required = True,collection_name =“schedule”)

然后你可以这样做:

  

foo.schedules

每当您想要获得所有电台的时间表时。