Python 从子表中筛选结果

Python 从子表中筛选结果,python,sqlalchemy,Python,Sqlalchemy,我一直在阅读SQLAlchemy的文档,对此我无法理解。考虑以下设置: boardset_user_association_table = db.Table('boardset_user_association', db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.Column('boardset_id', db.Integer, db.ForeignKey('boardset.id')) ) cla

我一直在阅读SQLAlchemy的文档,对此我无法理解。考虑以下设置:

boardset_user_association_table = db.Table('boardset_user_association', 
    db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('boardset_id', db.Integer, db.ForeignKey('boardset.id'))
)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True)
    password = db.Column(db.String(30))
    boardSet = db.relationship('BoardSet', secondary=boardset_user_association_table, backref='user')

    def __repr__(self):
        return "<User('%s','%s')>" % (self.username, self.id)

class BoardSet(db.Model):
    __tablename__ = 'boardset'
    id = db.Column(db.Integer, primary_key=True)
    created = db.Column(db.DateTime)
    boards = db.relationship('Board', backref='boardset', lazy='dynamic')

    def __repr__(self):
        return "<BoardSet('%s','%s')>" % (self.id, self.created)
boardset\u user\u association\u table=db.table('boardset\u user\u association',
db.Column('user\u id',db.Integer,db.ForeignKey('user.id')),
db.Column('boardset_id',db.Integer,db.ForeignKey('boardset.id'))
)
类用户(db.Model):
id=db.Column(db.Integer,主键=True)
username=db.Column(db.String(20),unique=True)
密码=db.Column(db.String(30))
boardSet=db.relationship('boardSet',secondary=boardSet\u user\u association\u table,backref='user')
定义报告(自我):
返回“”%(self.username,self.id)
类别板集(db.Model):
__tablename_uu='boardset'
id=db.Column(db.Integer,主键=True)
created=db.Column(db.DateTime)
boards=db.relationship('Board',backref='boardset',lazy='dynamic')
定义报告(自我):
返回“”%(self.id,self.created)

我从用户对象获取项目集合,但我无法对实际数据执行任何过滤等操作。例如,在某些情况下,我希望在创建的字段中按值对User.boardSet的结果进行排序

那么,您也可以对
boardSet
使用
lazy='dynamic'
,在这种情况下,您将获得以下好处:

dynamic
-该属性将返回预配置的查询对象 所有读取操作,可对其执行进一步的筛选操作 在迭代结果之前应用


当然,您可以在加载simply buy doing
sorted(myuser.boardSet,key=lambda bs:bs.created)后轻松地在内存中订购项目。

非常感谢。。我知道我错过了什么!
class User(...):
    ...
    boardSet = db.relationship('BoardSet', secondary=boardset_user_association_table, backref='user', lazy='dynamic')

myuser = session.query(User).get(1)
boardsets = myuser.boardSet.order_by(BoardSet.created)