【问题标题】:Flask join children烧瓶加入孩子
【发布时间】:2022-01-24 19:53:28
【问题描述】:

在我的问题中,假设一个人可以有多个地址,每个地址可以有一个位置。

是否可以查询 Person 包含与其位置相连的地址?

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    addresses = db.relationship('Address', backref='person', lazy=True)

class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), nullable=False)
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'),
        nullable=False)
    location_id = db.Column(db.Integer, ForeignKey('location.id'))

class Location(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    location_name = db.Column(db.String(50), nullable=False)
    address = relationship("Address", uselist=False, backref="location")
    

因此,当我循环人员时,我可以同时从地址和位置访问数据:

for person in persons:
    person.addresses.location_name

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    类似:

    class Person(db.Model):
       def __init__(self):
           self.address = db.session.query( Address).filter( Address.person_id == self.id).first()
    
       id = db.Column(db.Integer, primary_key=True)
       name = db.Column(db.String(50), nullable=False)
       addresses = db.relationship('Address', backref='person', lazy=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 2019-02-02
      • 2021-05-17
      相关资源
      最近更新 更多