【发布时间】:2013-05-14 02:34:24
【问题描述】:
我有两个模型: Car(ndb.Model) 和 Branch(ndb.Model) 各有一个 key 方法。
@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)
因为一辆车不可能有很多公司,所以实体组不会太大。
但是我不确定如何处理分支密钥,因为许多公司可能具有相同的分支名称,并且许多分支可能具有相同的公司。
【问题讨论】:
标签: google-app-engine composite-key app-engine-ndb compound-key entity-groups