Python 炼金术中的关系过滤
情况是这样的。我有很多用户和文件。以下是基本代码:Python 炼金术中的关系过滤,python,postgresql,filter,sqlalchemy,Python,Postgresql,Filter,Sqlalchemy,情况是这样的。我有很多用户和文件。以下是基本代码: owners_datasets = db.Table( 'owners_datasets', db.Column('user_id', db.Integer(), db.ForeignKey( 'user.id', ondelete='CASCADE')), db.Column('dataset_id', db.Integer(), db.ForeignKey( 'dataset.id',
owners_datasets = db.Table(
'owners_datasets',
db.Column('user_id', db.Integer(), db.ForeignKey(
'user.id', ondelete='CASCADE')),
db.Column('dataset_id', db.Integer(), db.ForeignKey(
'dataset.id', ondelete='CASCADE'))
)
class User(UserJsonSerializer, UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
...
class Dataset(DatasetJsonSerializer, db.Model):
id = db.Column(db.Integer(), primary_key=True)
...
owners = db.relationship(
'User',
secondary=owners_datasets,
backref=db.backref('collections', lazy='dynamic')
)
我的目标是在Dataset对象和User对象之间建立一个关系。稍后,我只想查询当前用户在所有者列表中的数据集。由于这是一个多对多映射,我正在寻找类似于contains()
查询的内容,但似乎找不到任何内容。到目前为止,我得到的是:
datasets = Dataset.query.filter_by(Dataset.owners.any(current_user))
返回错误:
AttributeError: 'User' object has no attribute '_annotate'
我还没有找到任何关于这个错误的参考资料,我不确定如何在这里继续
使用postgres 9.3你就是一个救生员。这是一个非常糟糕的解决办法,这是一个真正的解决办法。有关于这个的文档吗?当然,方法中的原始示例。
Dataset.query.filter(Dataset.owners.any(User.id==current_user.id))