У меня есть модель 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()
... так, чтобы я может затем получить доступ, например, к upcoming_shows [0] .Venue.name, upcoming_shows [0] .Artist.name и upcoming_shows [0] .start_time.
Этот запрос, однако, возвращает следующее:
sqlalchemy.ex c .ArgumentError: Ошибка создания backref 'place' для отношения 'Venue.shows': свойство этого имени существует в mapper 'mapped class Show-> Show'
Чувствую, что я рядом, но упускаю что-то фундаментальное!