这使我发疯,我敢肯定,这比我做的要直接得多。但是到目前为止,搜索和尝试各种组合的努力无穷无尽,无所不能。
我正在使用Flask和SQLAlchemy,并且对这两者都是新手。 所以,如果我有两个这样定义的类/表
class Child(db.Modal):
__tablename__ = 'children'
id = db.Column(db.Integer, primary_key=True)
kidsname = db.Column(db.String(20))
parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'), nullable=False)
class Parent(db.Model):
__tablename__ = 'parent'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
children = db.relationship('Child', backref='parent', lazy=True)
我想要的是能够向父类添加属性以返回子代的数量,例如
def child_count(self):
return ????
当父实例传递给我的html模板时,我希望能够做到这一点。
<p>Parent: {{ parent.name }} # of children: {{parent.child_count}}</p>
在正确方向上的任何帮助或指示,将不胜感激。
答案 0 :(得分:0)
您可以使用column_property
https://docs.sqlalchemy.org/en/latest/orm/mapped_sql_expr.html
from sqlalchemy.orm import column_property
from sqlalchemy import select, func
class Parent(db.Model):
__tablename__ = 'parent'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
children = db.relationship('Child', backref='parent', lazy=True)
child_count = column_property(select([func.count(children.id)]).\
where(children.parent_id==id))
此外,您可以在此问题SQLAlchemy - Writing a hybrid method for child count
中找到hybrid_property问题的解决方案