7

クエリを高速化するために、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)

違反ブループリント:

@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)

テンプレート:

{% 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 %}

私のモデルにいくつかのコンテキストを与えるために、私は検査記録を持っています。すべての検査には 1 つ以上の違反があります。そして、すべての違反には多くの検査があります

4

2 に答える 2