0

我嘗試各種實體KeyProperties App Engine中像這樣的相互鏈接:NDB許多一對多KeyProperty一種參考不工作

class ModelA(ndb.Model): 
    mod_bs = ndb.KeyProperty(kind=ModelB, repeated=true) 
    mod_cs = ndb.KeyProperty(kind=ModelC, repeated=true) 
    # other properties 

class ModelB(ndb.Model): 
    mod_as = ndb.StringProperty(kind=ModelA, repeated=true) 
    mod_cs = ndb.StringProperty(kind=ModelC, repeated=true) 
    # other properties 

class ModelC(ndb.Model): 
    mod_cs = ndb.KeyProperty(kind=ModelA, repeated=true) 
    mod_as = ndb.KeyProperty(kind=ModelB, repeated=true) 
    # other properties 

,但我得到一個錯誤,指出「ModelB」在這個結構中是未定義的。顯然,任何下面定義的地方都不能被識別。因此,如果我擺脫了ModelA和ModelB中的類似任務,那麼ModelC中的那些任務都可以正常工作。不過,我需要循環引用它們,而且似乎應該起作用。

我做錯了什麼?

回答

1

在這種情況下,你可以通過那種作爲一個字符串:

class ModelA(ndb.Model): 
    mod_bs = ndb.KeyProperty(kind='ModelB', repeated=true) 
    mod_cs = ndb.KeyProperty(kind='ModelC', repeated=true) 
    # other properties