2012-04-08 73 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