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