我有2个这样的db模型:
class Movie(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=False)
show_start = db.Column(db.Integer)
show_times = db.relationship('ShowTime')
class ShowTime(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=False)
theatre_id = db.Column(db.String(255))
date_time = db.Column(db.Integer)
movie_id = db.Column(db.Integer, db.ForeignKey('movie.id'))
是否可以使show_times
关系成为有条件的,即它会对我传递给theatre_id
的{{1}}做出反应并仅选择带有该ID的show_times
?
我需要将查询参数传递给构建在这些模型之上的REST API,如下所示:
答案 0 :(得分:0)
使用SQLAlchemy的bindparam()
函数完成。为Movie模型创建了一个关系:
show_times = db.relationship(lambda: ShowTime,
primaryjoin=lambda: db.and_(
Movie.id == ShowTime.movie_id,
ShowTime.theatre_id == db.bindparam('theatre_id')))
然后查询将是这样的:
Movie.query.params(theatre_id=3).options(db.joinedload(Movie.show_times)).all()