python - 获取 Flask-MongoAlchemy 文档中的字段值

标签 python mongodb flask mongoalchemy

我查看了文档,并广泛搜索了 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)之一:

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位置
我想知道是否有不同的方法可以执行此操作,因此我可以将 readRSS 返回值保存到 Feed 文档中的字段中。我尝试将 readRSS 函数的返回值分配给函数 __dict__ 中的变量,但这也不起作用。

我的应用程序中有该功能,但我想将结果保存到文档中,以减轻服务器(我从中获取 RSS 源的服务器)上的负载。

有没有办法做我想做的事情,或者我做的这一切都是错误的?

最佳答案

我找到了答案。我需要使用一个compulated_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'])

无论如何,谢谢大家。

关于python - 获取 Flask-MongoAlchemy 文档中的字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371345/

相关文章:

python - 来自 HTML 表中相同表单类的多个 WTForm 字段?

python - 通过 RPy 对 lme4.lmer 输出调用方差分析

python - Django 模型和 Python 类属性

arrays - 在 MongoDB Golang 中存储 slice 和嵌套结构

mongodb map reduce 用于搜索条件

python - 同一页面上相同 wtform 表单的多个独立实例

python - 代码风格 - 'hiding' 其他函数中的函数

python - 调用 bash 脚本作为 Python 子进程 - Bash 陷入无限循环,输入错误

java - 为什么我收到的文档未包含在投影中?

python - 如何在 OPENSHIFT 上部署 Flask wsgi 应用程序