我不确定如何实现这一点。
我有一个定义为
的模型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方法实现的子集。这应该在主题属性设置的那一刻发生。
如何在Post类中定义“concise_topics”属性?
答案 0 :(得分: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)
据我记得,每次 put 调用都设置了计算属性,所以到那时你的主题应该已存在。