所以,情况就是这样。我有一个多对多的用户和文件领域。这是基本代码:
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
答案 0 :(得分:2)
Dataset.query.filter(Dataset.owners.any(User.id==current_user.id))