对象关系映射(“ and_”不起作用)

时间:2020-04-14 20:31:26

标签: flask-sqlalchemy

and_无效

谁能帮助我。我是新来的烧瓶

test.py

from flask import session,Flask,render_template,request
from models import *
import os
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URL")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)

@app.route('/')
def index():
    query= book.query.filter(and_ (book.title=='we all lost',book.publication_year==2050)).all()
    for i in query:
        print(i.title)
    return render_template('hellotesting.html',m=query)

hellotesting.html

<html>
    <head></head>
    <body>
        <ol>
            <li>{{m.title}} </li>
            <li>{{m.author}} </li>
            <li>{{m.publication_year}}</li>
        </ol>
    </body>
</html>

错误 NameError NameError:名称“ and_”未定义


我不知道为什么它不起作用

1 个答案:

答案 0 :(得分:0)

您需要先导入它,然后才能使用它

from sqlalchemy import and_

然后

query = book.query.filter(and_(book.title=='we all lost',book.publication_year==2050)).all()

也要在hellotesting.html文件中尝试显示queryset属性(类似于模型实例列表),而不是特定对象,这将引发异常。在调用属性之前,必须从queryset中的函数或模板中获取任何对象。

在功能上您可以执行类似的操作

query = book.query.filter(and_(book.title=='we all lost',book.publication_year==2050)).first()

book = query[0]

然后将该对象放入render_template函数,或者您可以在模板中执行类似的操作

{{ m[0].title }}

阅读文档以获取更多示例和说明