你能帮我理解nbd密钥类文档或者更确切地说是祖先关系吗?

2024-09-27 09:25:55 发布

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

我试图把我的脑袋绕到gae数据存储中,但是我没有完全理解documentation for the Key Class/或者可能是我一般不掌握的祖先关系。 我想我想要的是多个祖先。你知道吗

示例: 比如说,我想模拟我们学校一年一度的慈善募捐活动;学生们在赛道上跑来跑去,每跑完一圈,他们的亲戚(=赞助商)就向慈善机构捐款。你知道吗

在我看来,我会创造以下几种:

  1. 简介(可以是跑步者和赞助商)
  2. 跑步(定义谁(参见个人资料)为什么慈善机构跑步,实际完成的轮数)
  3. 赞助(定义谁(参见个人资料)为哪一次跑步捐赠了多少钱,是否捐赠)

我了解到datastore是一个nosql、非关系数据库,但还没有完全掌握它。所以我的问题是:

创建一个“赞助”实体是数据存储中最好的方式吗?我也可以将其建模为一种has-a关系(每一次跑步都有赞助商),但由于我也想跟踪赞助商的数量,赞助商是否支付了费用,也许更多,这似乎不合适

b.我想很容易地查询一个人的所有赞助,以及属于某个跑步项目的所有赞助。 所以,我觉得这是合适的:

Profile --is ancestor of--> Run
Profile --is ancestor of--> Sponsorship
Run --is ancestor of--> Sponsorship

这合理吗? 我可以看到一个键的constructor,它以祖先顺序中的几种类型作为参数。是为这个案子设计的吗?”“Run”和“profile”将处于相同的“level”(即父母的祖先不是父亲和祖父)-在python中该构造函数是什么样子的?你知道吗


Tags: of数据run定义关系isdocumentationprofile
1条回答
网友
1楼 · 发布于 2024-09-27 09:25:55

在实体之间建立关系的主要方法是通过实体模型中的关键属性。通常不需要祖先。你知道吗

例如:

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 groupsContention problems in Google App Engine。你知道吗

相关问题 更多 >

    热门问题