Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查询父模型时是否可以筛选关系的内容?_Python_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 查询父模型时是否可以筛选关系的内容?

Python 查询父模型时是否可以筛选关系的内容?,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我有两个模型代表电影和他们的放映时间。我想查询所有电影,但它们的show\u times关系应该只包含未来的放映时间 class PKMovie(db.Model): id = db.Column(db.Integer, primary_key=True) url = db.Column(db.String(255)) show_times = db.relationship('ShowTime') class ShowTime(db.Model): id =

我有两个模型代表电影和他们的放映时间。我想查询所有电影,但它们的
show\u times
关系应该只包含未来的放映时间

class PKMovie(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    url = db.Column(db.String(255))
    show_times = db.relationship('ShowTime')

class ShowTime(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.Date)
    pk_movie_id = db.Column(db.Integer, db.ForeignKey('pk_movie.id'))

查询父项时是否可能影响关系的内容?

默认情况下,关系是一个简单的等式表达式:
parent.id==ForeignKey.id
。不能在查询时*更改关系的内容,但可以创建另一个仅选择所需项的关系

class PKMovie(db.Model):
    # ...
    future_show_times = db.relationship(
        lambda: ShowTime,
        primaryjoin=lambda: db.and_(
            PKMovie.id == ShowTime.pk_movie_id,
            ShowTime.date >= db.func.current_timestamp()
        ),
        viewonly=True
    )
访问实例的
future\u show\u times
将只返回将来的显示时间。您可以在查询期间加载此关系,以便在访问时不会产生额外的数据库查询

PKMovie.query.options(db.joinedload(PKMovie.future_show_times)).all()


*从技术上讲,您可以在查询时更改关系,如所示。然而,我认为明确定义这些其他关系要清楚得多