如何查询参考属性?

时间:2010-12-27 18:38:57

标签: python google-app-engine google-cloud-datastore

假设:

class Pet (db.model):
  owner = db.ReferenceProperty(User)
  vet = db.ReferenceProperty(Vet)
  name = db.StringProperty()

如何查询拥有用户A和Vet B的宠物?我假设Pet类中的引用是键。如果你知道一个好的,请发表参考文献 - 我在文档中找不到一个好的例子。

3 个答案:

答案 0 :(得分:2)

他们是钥匙。

您可以从模型实例中获取它们,也可以从头开始生成它们。

过滤密钥: Question GQL ReferenceProperty filter

db.GqlQuery("SELECT * FROM Pet WHERE owner = :1 and vet = :2", owner.key(), vet.key())

Pet.all().filter("owner =", owner.key()).filter("vet =", vet.key())

使用from_path创建密钥: Datastore key.from_path

Key.from_path(kind, id_or_name, parent=none, namespace=None, **kwds)
Key.from_path('Pet', 'Dr Vet')
Key.from_path('Pet', 123)

答案 1 :(得分:0)

经过一些试验和错误,我发现解决方案是直截了当的:

q = Pet.all()
q.filter("owner", owner)
q.filter("vet", vet)
q.get()

答案 2 :(得分:0)

查看Gqlquery课程:

db.GqlQuery("SELECT * FROM Pet WHERE owner = :1 AND vet = :2", user.key(), vet.key())