错误flask-sqlalchemy NameError:未定义全局名称"joinedload"

Wil*_*rto 7 python sqlalchemy flask flask-sqlalchemy

我正在尝试使用sqlalchemy加载策略来加速我的查询.读完这篇文章后,我意识到我错误地在模板中循环记录.唯一的问题是我得到这个错误:

NameError:未定义全局名称"joinedload".

这是因为我正在使用flask-sqlalchemy或者我忘了导入一些东西吗?

Models.py:

inspection_violations = db.Table('inspection_violations',
db.Column('violation_id', db.Integer, db.ForeignKey('violations.violation_number')),
db.Column('inspection_id', db.Integer, db.ForeignKey('inspection.inspection_id')), )

class Inspection(db.Model):
    inspection_id = db.Column(db.Integer, primary_key=True)
    violations = db.relationship('Violations', secondary=inspection_violations, backref=db.backref('inspection', lazy='dinamic'))
    facility_id = db.Column(db.String(100), db.ForeignKey('facilities.branch_name'))

class Violations(db.Model):
    violation_number = db.Column(db.Integer, primary_key=True)
    details  = db.Column(db.Text)
Run Code Online (Sandbox Code Playgroud)

违规蓝图:

@violations_blueprint.route('/violations/<int:violation_number>')
def show_single_violation(violation_number):
    violation = Violations.query.options(joinedload('inspection')).get(violation_number)
    return render_template('violations/single-violation.html' ,violation=violation)
Run Code Online (Sandbox Code Playgroud)

模板:

{% for inspection in violation.inspection %} 
  <p><a href="{{ url_for('inspection_blueprint.show_inspection', id=inspection.inspection_id) }}">    {{ inspection.facilities.branch_name }}</a></p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

为了给我的模型提供一些背景信息,我有一份检查记录.每次检查都有一次或多次违规.每次违规都有很多检查

Bib*_*ath 15

好吧,错误信息说joinedload没有定义,所以显而易见的解决方案是检查你是否导入它,如果没有 -

from sqlalchemy.orm import joinedload
Run Code Online (Sandbox Code Playgroud)