GAE-Python数据建模/查询:引用实体的属性

2024-09-29 17:19:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个与此类似的场景,我正在尝试找到最佳/最常见的解决方案:

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

我考虑过的一些(黑客)解决方案:

  • 分别对车轮和汽车进行约束,并手动检查交叉口(慢!)你知道吗
  • 存储的副本车.人容量通过使用computedProperty在轮子中。(坏,因为我需要更新所有车轮连接到汽车时,汽车的人容量的变化。是的,在我的实际案例中,“人的能力”会改变)

我的两个问题是:
为什么会这样车.人容量在查询中不工作?
有没有更好的办法?你知道吗


Tags: dbmodel场景解决方案car汽车classwheel
1条回答
网友
1楼 · 发布于 2024-09-29 17:19:30

您的结论是正确的,数据存储没有子属性查询功能(您可以使用StructureProperty实现这一点,但不能使用您正在寻找的方式)。
你应该去规范化你的模型,把所有的东西都放在大实体上,更新会很痛苦,但检索结果会更容易更快。你知道吗

相关问题 更多 >

    热门问题