你能帮我理解 nbd Key Class 文档或者祖先关系吗?
Can you help me understand the nbd Key Class Documentation or rather ancestor relationship?
我正在努力了解 gae 数据存储区,但我并不完全理解 documentation for the Key Class/ 或者这可能是我不了解的一般祖先关系。
我认为我想要的是多个祖先。
示例:
假设我想为我们学校每年赞助的 运行 慈善机构做模特;学童 运行 绕着跑道转了一圈,他们的亲属(=赞助商)在完成的每一轮比赛中都向慈善机构捐款。
在我看来,我会创建以下几种:
- 简介(可以是运行合作者和赞助商)
- 运行(定义谁(参见个人资料)运行什么慈善机构,实际完成的回合)
- 赞助(定义谁(cf.profile)为什么捐赠多少运行,是否已经捐赠)
我了解到datastore是一个nosql的非关系型数据库,但还没有完全掌握。所以我的问题是:
一个。为 "Sponsorship" 创建实体甚至是数据存储中的最佳方式吗?我也可以将其建模为有关系(每个 运行 都有赞助商)——但由于我还想跟踪赞助金额,赞助商是否支付了费用,也许更多,这似乎不合适
b。我想轻松查询一个人的所有赞助以及属于某个 运行 的所有赞助。
所以,我觉得,这将是合适的:
Profile --is ancestor of--> Run
Profile --is ancestor of--> Sponsorship
Run --is ancestor of--> Sponsorship
这样合理吗?
我可以看到 Key 的 constructor 以祖先顺序接受多种类型作为参数。那是为这个案子设计的吗? "Run" 和 "profile" 将是相同的 "level"(即妈妈和爸爸的祖先而不是父亲和祖父)——那个构造函数在 python 中会是什么样子?
在实体之间建立关系的主要方式是通过实体模型中的关键属性。通常不需要血统。
例如:
class Profile(ndb.Model):
name = ndb.StringProperty()
class Run(ndb.Model):
runner = ndb.KeyProperty(kind='Profile')
rounds = ndb.IntegerProperty()
sponsorship = ndb.KeyProperty(kind='Sponsorship')
class Sponsorship(ndb.Model):
run = ndb.KeyProperty(kind='Run')
donor = ndb.KeyProperty(kind='Profile')
done = ndb.BooleanProperty()
祖先只是将实体放在同一个实体组中(这可能非常有限!),同时在模型已经建立的关系之上强制执行 额外的 关系。参见 Transactions and entity groups and maybe 。
我正在努力了解 gae 数据存储区,但我并不完全理解 documentation for the Key Class/ 或者这可能是我不了解的一般祖先关系。 我认为我想要的是多个祖先。
示例: 假设我想为我们学校每年赞助的 运行 慈善机构做模特;学童 运行 绕着跑道转了一圈,他们的亲属(=赞助商)在完成的每一轮比赛中都向慈善机构捐款。
在我看来,我会创建以下几种:
- 简介(可以是运行合作者和赞助商)
- 运行(定义谁(参见个人资料)运行什么慈善机构,实际完成的回合)
- 赞助(定义谁(cf.profile)为什么捐赠多少运行,是否已经捐赠)
我了解到datastore是一个nosql的非关系型数据库,但还没有完全掌握。所以我的问题是:
一个。为 "Sponsorship" 创建实体甚至是数据存储中的最佳方式吗?我也可以将其建模为有关系(每个 运行 都有赞助商)——但由于我还想跟踪赞助金额,赞助商是否支付了费用,也许更多,这似乎不合适
b。我想轻松查询一个人的所有赞助以及属于某个 运行 的所有赞助。 所以,我觉得,这将是合适的:
Profile --is ancestor of--> Run
Profile --is ancestor of--> Sponsorship
Run --is ancestor of--> Sponsorship
这样合理吗? 我可以看到 Key 的 constructor 以祖先顺序接受多种类型作为参数。那是为这个案子设计的吗? "Run" 和 "profile" 将是相同的 "level"(即妈妈和爸爸的祖先而不是父亲和祖父)——那个构造函数在 python 中会是什么样子?
在实体之间建立关系的主要方式是通过实体模型中的关键属性。通常不需要血统。
例如:
class Profile(ndb.Model):
name = ndb.StringProperty()
class Run(ndb.Model):
runner = ndb.KeyProperty(kind='Profile')
rounds = ndb.IntegerProperty()
sponsorship = ndb.KeyProperty(kind='Sponsorship')
class Sponsorship(ndb.Model):
run = ndb.KeyProperty(kind='Run')
donor = ndb.KeyProperty(kind='Profile')
done = ndb.BooleanProperty()
祖先只是将实体放在同一个实体组中(这可能非常有限!),同时在模型已经建立的关系之上强制执行 额外的 关系。参见 Transactions and entity groups and maybe