假设:
class Pet (db.model):
owner = db.ReferenceProperty(User)
vet = db.ReferenceProperty(Vet)
name = db.StringProperty()
如何查询拥有用户A和Vet B的宠物?我假设Pet类中的引用是键。如果你知道一个好的,请发表参考文献 - 我在文档中找不到一个好的例子。
答案 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())