我已經瀏覽了文檔,文檔和SO問題和答案,並且仍然在理解這一小部分內容。你應該選擇哪一個?瞭解ndb密鑰類與KeyProperty
這是我到目前爲止(只是樣品)閱讀:
的關鍵類似乎相當簡單的我。當您創建一個ndb實體時,數據存儲會自動爲您創建一個鍵,通常以鍵(Kind,id)的形式爲您創建id。
所以說,你有這兩款車型:
class Blah(ndb.Model):
last_name = ndb.StringProperty()
class Blah2(ndb.Model):
first_name = ndb.StringProperty()
blahkey = ndb.KeyProperty()
所以只是用鑰匙種類和你想Blah1父母(或有幾個家庭成員具有相同的姓氏)
lname = Blah(last_name = "Bonaparte")
l_key = lname.put() **OR**
l_key = lname.key.id() # spits out some long id
fname_key = l_key **OR**
fname_key = ndb.Key('Blah', lname.last_name) # which is more readable..
則:
lname = Blah2(parent=fname_key, first_name = "Napoleon")
lname.put()
lname2 = Blah2(parent=fname_key, first_name = "Lucien")
lname2.put()
到目前爲止好(我認爲)。現在關於Blah2的KeyProperty。假設Blah1仍然是一樣的。
lname3 = Blah2(first_name = "Louis", blahkey = fname_key)
lname3.put()
這是正確的嗎?
如何查詢各種事情
查詢姓:
Blah.query() # all last names
Blah.query(last_name='Bonaparte') # That specific entity.
名字:
Blah2.query()
napol = Blah2.query(first_name = "Napoleon")
bonakey = napol.key.parent().get() # returns Bonaparte's key ??
bona = bonakey.get() # I think this might be redundant
這是我迷路。如何使用key或keyproperty從名字中查找Bonaparte。我沒有在這裏添加它,也許應該有這個,因爲Keys記錄了祖先/父母,所以父母,祖父母,偉大的父母都在討論這個問題。
如何以及爲什麼要使用KeyProperty與固有的關鍵類。另外想象一下你有3個傳感器s1,s2,s3。每個傳感器都有數以千計的讀數,但是您想要保持與s1相關的讀數,以便您可以在s1中顯示今天的所有讀數。你會用哪個? KeyProperty還是關鍵類?我很抱歉,如果這已在其他地方得到解答,但我沒有看到有關選擇哪個以及爲什麼/如何的明確示例/指南。