3
比方說,我有一個包含母親,父親和孩子對象的數據存儲。在母親和父親的對象內部,我有一個名爲「孩子」的字段,用於存儲對孩子的引用。是否有可能從母親和父親中引用這個孩子,而不爲每個孩子創建重複的子實例(以OOP的風格)。數據庫是如何工作的?是否可以在Google App Engine中創建參考?
比方說,我有一個包含母親,父親和孩子對象的數據存儲。在母親和父親的對象內部,我有一個名爲「孩子」的字段,用於存儲對孩子的引用。是否有可能從母親和父親中引用這個孩子,而不爲每個孩子創建重複的子實例(以OOP的風格)。數據庫是如何工作的?是否可以在Google App Engine中創建參考?
是的,您可以使用db.ReferenceProperty來做到這一點。
引用屬性只是存儲它引用的實體的唯一鍵。因此,母親和父親實體可以分別包含與他們的孩子相對應的密鑰副本,如下所示:
class Child(db.Model):
... # child properties
class Father(db.Model):
child = db.ReferenceProperty(Child)
...
class Mother(db.Model):
child = db.ReferenceProperty(Child)
...
這是後續問題。現在假設母親和父親存儲子對象(子女)的列表。由於列表是可擴展的,因此我不能將每個子代表作爲它自己的實例變量(如:child_x = db.ReferenceProperty(Child)。我將如何存儲對Child對象的引用列表? – Petwoip 2010-06-28 18:16:07
您可以使用[db.ListProperty]( http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ListProperty)來存儲[db.Key]的列表(http://code.google.com/appengine/docs/python /datastore/keyclass.html),每個引用一個'Child'實體。閱讀更多關於它[這裏](http://code.google.com/appengine/docs/python/datastore/entitiesandmodels.html#Lists) 。 – 2010-06-28 18:36:02
非常感謝您的幫助! – Petwoip 2010-06-29 13:48:29