说我有以下型号:
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
是电台对象
答案 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
每当您想要获得所有电台的时间表时。