我有两种模式: Car(ndb.Model)和Branch(ndb.Model)每种都有一个关键方法。在谷歌应用程序引擎上创建复合键或复合键
@classmethod
def car_key(cls, company_name, car_registration_id):
if not (company_name.isalnum() and car_registration_id.isalnum()):
raise ValueError("Company & car_registration_id must be alphanumeric")
key_name = company_name + "-" + car_registration_id
return ndb.Key("Car", key_name)
分公司重点:
@classmethod
def branch_key(cls, company_name, branch_name):
if not (company_name.isalnum() and branch_name.isalnum()):
raise ValueError("Company & Branch names must be alphanumeric")
key_name = company_name + "-" + branch_name
return ndb.Key("Branch", key_name)
但是我想这是一个有点难看,而不是真正的你应该如何使用按键。
(汽车登记是汽车独有的,但有时一家公司可能会将汽车出售给另一家公司,汽车也会在分支机构之间移动)。
由于公司可能有很多汽车或许多分支机构,我想我不想要大型实体组,因为每秒只能写入一个实体组。
我该如何定义我的密钥?
例如我正在考虑car_key = ndb.Key("Car", car_reg_id, "Company", company_name)
,因为汽车不太可能有很多公司,所以实体组不会太大。
但是我不知道该如何处理分支关键字,因为许多公司可能具有相同的分支名称,并且许多分支可能具有相同的公司。
谢谢。我总是知道与登录用户帐户关联的公司名称和分支名称。因此,我认为我会保持原样(两个字符串以中间的“ - ”连接)。我将为每个分支创建一个汽车注册ID列表。这将提供一种方式来查看相关的汽车,然后点击“编辑汽车”,它将被给予注册ID。 – 2013-05-14 04:29:35