访问第二个模型的属性而不是外键

时间:2016-02-11 12:59:16

标签: python flask sqlalchemy flask-sqlalchemy

我有一个Project,其中包含Region的外键。我想显示项目的区域名称。我只能得到该地区的id。如何从name访问Region的{​​{1}}属性?

Project
class Project(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    region = db.Column(db.Integer, db.ForeignKey('regions.id'))

class Region(db.Model):
    name = db.Column(db.String(30))
    id = db.Column(db.Integer, primary_key=True)

@deliverables.route('/<int:cid>')
def deliv_view(cid):
    projects = Project.query.filter(Project.id == cid).all()
    return render_template('ginn/deliview.html', projects = projects)
{{ project.region }}

1 个答案:

答案 0 :(得分:3)

ProjectRegion之间定义外键列。然后在两者之间定义relationship以直接访问其他模型。

class Region(db.Model):
    id = db.Column(db.Integer, primary_key=True)

class Project(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    region_id = db.Column(db.ForeignKey(Region.id), nullable=False)
    region = db.relationship(Region, backref='projects')

project = Project.query.get(1)
print(project.region.name)

这个以及许多其他有用的技术都在quickstart中进行了描述,并在整个文档中进行了更深入的介绍。