2012-04-08 76 views
0

我有一個具有結構化屬性的主屬性。我在結構化屬性中定義了一個屬性,它需要訪問父屬性的值。我試過的語法是self.key.parent().email,但這並沒有辦法。我怎樣才能做到這一點?訪問父級的結構化屬性

class Individual(ndb.Expando): 
    name = ndb.StringProperty() 
    email = ndb.StringProperty() 

    team_list = ndb.StructuredProperty(IndividualTeam, repeated=True) 

class IndividualTeam(ndb.Model): 
    team_key = ndb.KeyProperty() 
    fundraise_amt = DecimalProperty() 

    @property 
    def donation_total(self): 
     #This is my problem here 
     return self.key.parent().email 

回答

2

個人不是IndividualTeam的父母。 個人只包括IndividualTeam。 您推薦使用單個對象訪問電子郵件屬性。

0

您將始終加載包含的實體,因此需要知道包含該實體方法的屬性的方法。這些方法可以詢問結構化屬性中的實體。 很難看到您正在嘗試解決的具體問題,因爲您的donation_total似乎不會返回電子郵件。

+0

爲了簡潔起見,我排除了計算捐贈總額的代碼。簡而言之,它使用電子郵件地址查詢捐款並添加它們。正如你在模型定義中看到的那樣,這些結構化屬性有一個列表,所以它不僅僅是一個。所以,我確實需要訪問父項屬性,但在我的測試中,它似乎不允許訪問。當我將問題代碼更改爲'return self.email'時,我得到:'AttributeError:'IndividualTeam'對象沒有屬性'email''根據你所說的,它應該允許我訪問,但它不會。 – rhefner1 2012-04-09 03:20:20