Я пытаюсь отобразить список шоу в веб-приложении, в котором хранятся места проведения, артистов и шоу. Мне удалось сделать концертные площадки и артистов, но шоу доставляют мне проблемы. Это вызывает эту ошибку:
sqlalchemy.exc.ArgumentError: Can't find property named "Show" on mapped class Show->shows in this Query.
Честно говоря, я понятия не имею, как подойти к ее исправлению, и поиск в Google не дал ничего полезного, насколько я мог судить. Кажется, он ищет свойство "Показать", но я не знаю почему. Может кто-нибудь объяснить, что я сделал не так / как это исправить?
Раздел, вызывающий ошибку, - def shows()
:
class Venue(db.Model):
__tablename__ = 'venues'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
city = db.Column(db.String(120))
state = db.Column(db.String(120))
address = db.Column(db.String(120))
phone = db.Column(db.String(120))
image_link = db.Column(db.String(500))
facebook_link = db.Column(db.String(120))
genres = db.Column(db.ARRAY(db.String))
image_link = db.Column(db.String(500))
facebook_link = db.Column(db.String(120))
website = db.Column(db.String(300))
seeking_talent = db.Column(db.Boolean)
seeking_description = db.Column(db.String(120))
shows = db.relationship('Show', backref='venue', lazy=True)
class Artist(db.Model):
__tablename__ = 'artists'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
city = db.Column(db.String(120))
state = db.Column(db.String(120))
phone = db.Column(db.String(120))
genres = db.Column(db.String(120))
image_link = db.Column(db.String(500))
facebook_link = db.Column(db.String(120))
website = db.Column(db.String(300))
seeking_shows = db.Column(db.Boolean)
seeking_description = db.Column(db.String(120))
shows = db.relationship('Show', backref='artist', lazy=True)
class Show(db.Model):
__tablename__ = 'shows'
id = db.Column(db.Integer, primary_key=True)
artist_id = db.Column(db.Integer, db.ForeignKey('artists.id'), nullable = False)
venue_id = db.Column(db.Integer, db.ForeignKey('venues.id'), nullable = False)
start_time = db.Column(db.DateTime, nullable = False)
def __repr__(self):
return '<Show {} {}>'.format(self.artist_id, self.venue_id)
def shows():
# displays list of shows at /shows
# TODO: replace with real venues data.
# num_shows should be aggregated based on number of upcoming shows per venue.
allshows = Show.query.options(db.joinedload('Show.Venue'), db.joinedload('Show.Artist')).all()
data = list(map(Show.detail, allshows))
return render_template('pages/shows.html', shows=data)