我有兩種模式: 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