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

发布于 2024-07-18 21:14:09 字数 623 浏览 4 评论 0原文

假设我有以下模型:

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)

假设我有一个 Station 对象存储在 var foo 中。

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

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

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

再次,foo是一个Station对象

Say I have the following model:

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)

And let's say I have a Station object stored in the var foo.

How do I assemble a GQL query that returns all Schedule objects with a reference to the Station object referenced by foo?

This is my best (albeit incorrect) attempt to form such a query:

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

Once again foo is a Station object

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风筝有风,海豚有海 2024-07-25 21:14:09

您不应使用字符串替换将用户数据插入到 GQL 字符串中。 GQL 支持参数替换,因此您可以执行以下操作:

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

或者使用 Query 接口:

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

You shouldn't be inserting user data into a GQL string using string substitution. GQL supports parameter substitution, so you can do this:

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

or, using the Query interface:

Schedule.all().filter("station =", foo.key())
倾城°AllureLove 2024-07-25 21:14:09

更简单的事情是通过将“collection_name”字段添加到 ReferenceProperty 来更改模型定义:

station = db.ReferenceProperty(Station, required=True, collection_name="schedules")

然后你可以这样做:

foo.schedules

每当您想要获取所有车站的时间表时,都可以

An even easier thing to do is to change the model definition by adding the 'collection_name' field to the ReferenceProperty:

station = db.ReferenceProperty(Station, required=True, collection_name="schedules")

Then you can just do:

foo.schedules

whenever you want to get all the stations' schedules.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文