【发布时间】:2013-11-18 23:57:46
【问题描述】:
我在flask-sqlalchemy 中有一个典型的帖子/标签(许多标签与一个帖子相关联)关系,我想在我提供的列表中选择没有任何标签标记的帖子。一、我设置的模型:
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
tags = db.relationship('Tag', lazy='dynamic')
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text(50))
post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
有点像
db.session.query(Post).filter(Post.tags.name.notin_(['dont','want','these']))
失败
AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Post.tags has an attribute 'name'
我认为这是因为标签是一种关系而不是一列。当我手动编写实际的 SQL 时,我在另一个项目上工作。这是有效的 SQL:
SELECT * FROM $posts WHERE id NOT IN (SELECT post_id FROM $tags WHERE name IN ('dont','want','these'))
如何使用 sqlalchemy API 实现这一点?
【问题讨论】:
标签: python sqlalchemy flask-sqlalchemy