我有以下型号:
class Company(ndb.Model):
name = ndb.StringProperty(indexed=False)
# some other fields
class User(polymodel.PolyModel):
company = ndb.KeyProperty(kind=Company)
# some other fields
class Object(ndb.Model):
user = ndb.KeyProperty(kind=User)
# some other fields
现在我有了一个user
,我想查询Objects
,它们与同一公司中的其他Users
关联,如下所示:
Object.query(Object.user.company == user.company)
当然,这不起作用,因为Object.user
是一个键,我不能访问除此之外的任何内容
有什么办法吗?我只需要公司密钥,我正在考虑一个ComputedProperty
但我不确定这是否是最好的解决方案。另外,最好基于company
中的任何字段进行查询
您需要取消规范化并存储冗余信息,因为数据存储不支持连接
例如,给定上述模型,用户只能是一个公司的成员,如果确实需要搜索其用户是特定公司成员的所有对象,则将公司密钥存储在该对象中
如果最适合您,请使用计算属性
或者使用一个总是将用户作为参数的工厂,并以此方式构造对象
相关问题 更多 >
编程相关推荐