【发布时间】:2021-08-07 13:20:28
【问题描述】:
类似于问题SQLAlchemy: Hybrid expression with relationship,但我想知道在父级上实现混合表达式的最佳方法是什么。改编的例子:
class School(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(30))
address = db.Column(db.String(30))
teachers = relationship('Teacher', back_populates='school')
class Teacher(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(30))
id_school = db.Column(db.Integer, db.ForeignKey(School.id))
school = relationship('School', back_populates='teachers')
然后我向学校添加一个使用该关系的混合属性,如下所示:
@hybrid_property
def n_teachers(self):
return len(self.teachers)
现在问题的关键是将此属性提供给查询过滤器的最佳方式是什么,例如School.query.filter(School.n_teachers >= 10)(association_proxy、@<hybird_property>.expression 等)
【问题讨论】:
标签: python sqlalchemy