0

Я точно не знаю, как это достичь.Вычислительная недвижимость для Google Datastore

У меня модель определяется как

class Post(ndb.Model): 
    author_key = ndb.KeyProperty(kind=Author) 
    content = ndb.StringProperty(indexed=False) 
    created = ndb.DateTimeProperty(auto_now_add=True) 
    title = ndb.StringProperty(indexed=True) 
    topics = ndb.StructuredProperty(Concept, repeated=True) 
    concise_topics = ndb.ComputedProperty(get_important_topics()) 

    @classmethod 
    def get_important_topics(cls): 
     cls.concise_topics = filter(lambda x: x.occurrence > 2, cls.topics) 
     return cls.concise_topics 

Я хотел бы установить значение concise_topics (который находится на той же типа, как и тем) к подмножеству дружнее с помощью метода get_important_topics. Это должно произойти в момент установки свойства тем.

Как определить свойство concise_topics в классе Post?

ответ

0

С помощью метода класса у вас нет доступа к значениям экземпляра. А также вы не должны вызывать функцию, только передать его вычислимому свойству, и позвольте ему позвонить сам по себе.

class Post(ndb.Model): 
    author_key = ndb.KeyProperty(kind=Author) 
    content = ndb.StringProperty(indexed=False) 
    created = ndb.DateTimeProperty(auto_now_add=True) 
    title = ndb.StringProperty(indexed=True) 
    topics = ndb.StructuredProperty(Concept, repeated=True) 

    def get_important_topics(self): 
     return filter(lambda x: x.occurrence > 2, self.topics) 

    concise_topics = ndb.ComputedProperty(get_important_topics) 

Насколько я помню, вычисленное свойство устанавливается на каждом поставил вызов, так что ваши темы должны быть там уже к тому времени.

+0

Теперь я получаю новую проблему. –

+0

см. Http://stackoverflow.com/questions/39571299/badrequesterror-blob-enity-proto-or-text-property-concise-topics-must-be-in-a –