Flask + SQLAlchemy中一对一的设置关系

三角洲

我试图在两个表之间建立一个关系,使我可以到达obj1.obj2.name,其中obj1是一个表,而obj2是另一个表。关系是一对一的(一个人到一个地理区域)

# Table one (Person)
class Person(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.String(100))
  region = db.Column(db.Integer, db.ForeignKey('region.id'))

# Table two (Region)
class Region(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.String(50))

如果使用Person.region(其中Person是Person类的对象),则获得用户区域的主键的int,但我想获取与其关联的“名称”字段。

我发现这可以工作:

region = models.Region.query.filter_by(id=REGION_ID).first().name

但这不适用于我的情况,因为我需要从Flask模板访问“名称”字段。

有什么想法吗?

在这里,我基本上使用您的模型,但是:1)更改了FK列的名称1)添加了一个relationship(请阅读文档的Relationship Configuration部分)

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    # @note: renamed the column, so that can use the name 'region' for
    # relationship
    region_id = db.Column(db.Integer, db.ForeignKey('region.id'))

    # define relationship
    region = db.relationship('Region', backref='people')


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

使用此方法,您可以获取以下区域的名称:

region_name = my_person.region.name  # navigate a 'relationship' and get its 'name' attribute

为了确保与人同时从数据库中加载区域,可以使用以下joinedload选项:

p = (db.session.query(Person)
     .options(db.eagerload(Person.region))
     .get(1)
     )

print(p)
# below will not trigger any more SQL, because `p.region` is already loaded
print(p.region.name)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

flask sqlalchemy一对一关系问题

来自分类Dev

Flask / SQLAlchemy-一对一关系语法

来自分类Dev

Flask-SQLAlchemy 中的一对一关系仅以一种方式工作

来自分类Dev

在Flask,SqlAlchemy中获得一对一关系的“ insert_id”

来自分类Dev

Flask-SQLAlchemy:更新一对多关系

来自分类Dev

flask-sqlalchemy,一对多关系,外键变为NULL

来自分类Dev

SQLAlchemy + Flask多对一关系

来自分类Dev

一对多,Flask-SqlAlchemy,sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)关系不存在

来自分类Dev

Jsonify Flask-SQLAlchemy Flask中的多对一关系

来自分类Dev

Flask-SQLAlchemy更新一对多记录

来自分类Dev

在Flask sqlalchemy中订购一对多模型?

来自分类Dev

围绕 Flask SqlAlchemy 查询简化一对 if-else 语句

来自分类Dev

Jsonify flask-sqlalchemy烧瓶中的多对一关系

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

在Laravel中一对一的关系只能走一条路

来自分类Dev

在Flask-Admin中显示一对多关系的第一个元素

来自分类Dev

在ASP.NET C#应用程序的GridView中一对一关系

来自分类Dev

Laravel刀片在@foreach循环中一对一关系

来自分类Dev

插入一对一关系

来自分类Dev

休眠一对一关系

来自分类Dev

Laravel一对一,逆关系

来自分类Dev

休眠一对一关系

来自分类Dev

一对一关系插入

来自分类Dev

EF关系一对一

来自分类Dev

休眠一对一关系

来自分类Dev

建立一对一关系

来自分类Dev

GSON一对一关系

来自分类Dev

一对一单向关系