【发布时间】:2020-05-12 15:08:06
【问题描述】:
我有一个 Artist 模型和一个 Venue 模型,它们之间存在由 Show 模型促进的多对多关系(节目指示演唱会的艺术家、地点和日期)。
class Venue(db.Model):
__tablename__ = 'Venue'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, unique=True, nullable=False)
shows = db.relationship('Show', backref='venue', lazy=True)
class Artist(db.Model):
__tablename__ = 'Artist'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, unique=True, nullable=False)
shows = db.relationship('Show', backref='artist', lazy=True)
class Show(db.Model):
__tablename__ = 'Show'
id = db.Column(db.Integer, primary_key=True)
venue_id = db.Column(db.Integer, db.ForeignKey('Venue.id'), nullable=False)
artist_id = db.Column(db.Integer, db.ForeignKey('Artist.id'), nullable=False)
start_time = db.Column(db.DateTime, nullable=False)
venue = db.relationship('Venue', back_populates='venue')
artist = db.relationship('Artist', back_populates='artist')
我想查询所有即将上映的演出的场地名称、艺术家姓名和日期,因此请记住以下内容...
upcoming_shows = Show.query.filter_by(show.start_time >= datetime.now()).all()
...这样我就可以访问例如,即将到来的节目[0].Venue.name、即将到来的节目[0].Artist.name 和即将到来的节目[0].start_time。
该查询返回以下内容:
sqlalchemy.exc.ArgumentError: 在创建 backref 'venue' 时出错 关系“Venue.shows”:该名称的属性存在于映射器上 '映射类显示->显示'
感觉我很接近但缺少一些基本的东西!
【问题讨论】:
标签: python flask orm sqlalchemy flask-sqlalchemy