2010-06-28 56 views
3

比方說,我有一個包含母親,父親和孩子對象的數據存儲。在母親和父親的對象內部,我有一個名爲「孩子」的字段,用於存儲對孩子的引用。是否有可能從母親和父親中引用這個孩子,而不爲每個孩子創建重複的子實例(以OOP的風格)。數據庫是如何工作的?是否可以在Google App Engine中創建參考?

回答

5

是的,您可以使用db.ReferenceProperty來做到這一點。

引用屬性只是存儲它引用的實體的唯一鍵。因此,母親和父親實體可以分別包含與他們的孩子相對應的密鑰副本,如下所示:

class Child(db.Model): 
    ... # child properties 
class Father(db.Model): 
    child = db.ReferenceProperty(Child) 
    ... 
class Mother(db.Model): 
    child = db.ReferenceProperty(Child) 
    ... 
+0

這是後續問題。現在假設母親和父親存儲子對象(子女)的列表。由於列表是可擴展的,因此我不能將每個子代表作爲它自己的實例變量(如:child_x = db.ReferenceProperty(Child)。我將如何存儲對Child對象的引用列表? – Petwoip 2010-06-28 18:16:07

+1

您可以使用[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

+0

非常感謝您的幫助! – Petwoip 2010-06-29 13:48:29

相關問題