我查看了文档,并广泛搜索了Google,但没有找到解决问题的方法
这是我的readRSS
函数(注意'get'是Kenneth Reitz请求模块的一种方法):
def readRSS(name, loc):
linkList = []
linkTitles = list(ElementTree.fromstring(get(loc).content).iter('title'))
linkLocs = list(ElementTree.fromstring(get(loc).content).iter('link'))
for title, loc in zip(linkTitles, linkLocs):
linkList.append((title.text, loc.text))
return {name: linkList}
这是我的MongoAlchemy课程之一:
class Feed(db.Document):
feedname = db.StringField(max_length=80)
location = db.StringField(max_length=240)
lastupdated = datetime.utcnow()
def __dict__(self):
return readRSS(self.feedname, self.location)
正如您所看到的,我必须在类的函数中调用readRSS
函数,因此我可以传递self
,因为它依赖于字段feedname
和{{ 1}}。
我想知道是否有不同的方法来执行此操作,因此我可以将location
返回值保存到readRSS
文档中的字段。我已经尝试将Feed
函数的返回值赋给函数readRSS
中的变量 - 这也不起作用。
我的功能在我的应用程序中运行,但我想将结果保存到文档中以减轻服务器上的负载(我从中获取RSS源)。
有没有办法做我打算做的事情,还是我认为这一切都错了?
答案 0 :(得分:1)
我找到了答案。我需要使用computed_field
装饰器,其中第一个参数是我的返回值的结构,deps
是一个包含该字段所依赖的字段的集合。然后我将依赖字段传递给函数的参数,然后就可以了。
@fields.computed_field(db.KVField(db.StringField(), db.ListField(db.TupleField(db.StringField()))), deps=[feedname, location])
def getFeedContent(a=[feedname, location]):
return readRSS(a['feedname'], a['location'])
非常感谢大家。