可以从Flask中的映射classe访问ViewField

时间:2013-05-16 11:34:04

标签: python couchdb flask

我的映射类中有一个ViewField。

class Keyword(Document):
    doc_type = 'keyword'

    content=TextField()
    search =  ViewField(
        'docs', "function(doc) {\
            if(doc.doc_type == 'keyword') {\
                if(doc.content == content) {\
                    emit(doc.id, doc);
                }\
            }\
        }"
    )

在我的蓝图中,我想迭代所有包含特定内容的关键字。

blueprint = Blueprint('keywords', __name__)

@blueprint.route('/keywords')
def handle_keywords():
    for keyword in Keyword.search['name']:
        print keyword

我的app.py设置。

app = Flask(__name__)
app.register_blueprint(keywords.blueprint)

manager = CouchDBManager()
manager.setup(app)

manager.add_document(Keyword)
server = Server()

manager.sync(app) 

但我收到错误Keyword doesn't have attribute 'search'。我做错了什么?

1 个答案:

答案 0 :(得分:0)

handle_keywords()中,您可能希望这样做:

Keyword.search(db, 'name')

(我不确定你在Flask的上下文中从哪里获取db;这只是我对CouchDB-Python源代码的阅读,这是Flask-CouchDB在封面下使用的内容。)