我有一个与此类似的场景,我正在努力寻找最佳/最常见的解决方案:
class Car(db.Model):
peopleCapacity = db.IntegerProperty()
class Wheel(db.Model):
car = db.ReferenceProperty(reference_class=Car, collection_name='wheels')
diameter = db.IntegerProperty()
我想要这种查询的结果:
smallWheelsForBigCars = db.GqlQuery(
'SELECT * FROM Wheel WHERE diameter < 10 AND car.peopleCapacity > 6'
)
# returns 0 entities as properties like 'car.peopleCapacity' are apparently not supported
我考虑过的一些(hacky)解决方案:
我的两个问题是:
为什么car.peopleCapacity在查询中不起作用?
有没有更好的方法呢?
答案 0 :(得分:0)
您的结论是正确的,数据存储区没有子属性查询功能(您可以使用StructureProperty来实现,但不是您想要的方式)。
你应该对你的模型进行非规范化并将所有内容放在大实体上,这将是一个很难更新,但会更容易,更快地检索结果。