1
因此,情况如下。我有一个多对多的用户和文件字段。这里的基本代码:通过关系在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', 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')
)
我的目标是建立一个数据集对象和用户对象之间的关系。稍后,我想查询当前用户位于所有者列表中的数据集。由于这是一个多对多的映射,我正在寻找类似查询的东西,但我似乎无法找到任何东西。这是我已经得到了迄今:
datasets = Dataset.query.filter_by(Dataset.owners.any(current_user))
返回错误:
AttributeError: 'User' object has no attribute '_annotate'
我一直没能找到这个错误的任何引用,我不确定如何用在这里继续。
使用的是Postgres 9.3
你是一个生命的救星。正在采取非常彻底的解决方法,这是一个真正的解决方案。有没有关于此的文档? –
当然,在[任何](http://docs.sqlalchemy.org/en/rel_1_0/orm/internals.html#sqlalchemy.orm.properties.RelationshipProperty.Comparator.any)方法中的原始示例。 – van