sqlalchemy, selecione usando a lista inclusiva (não em) de valores de colunas filho

Eu tenho um relacionamento típico de Post / Tags (muitas tags associadas a um post) em flask-sqlalchemy, e quero selecionar posts que não são marcados com qualquer tag em uma lista que eu forneço. Primeiro, os modelos que eu configurei:

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'))

Algo como

db.session.query(Post).filter(Post.tags.name.notin_(['dont','want','these']))

falha com

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Post.tags has an attribute 'name'

o que eu suponho é porque tags é um relacionamento e não uma coluna. Eu tive este trabalho em outro projeto quando eu estava escrevendo o SQL real manualmente. Este foi o SQL que funcionou:

SELECT * FROM $posts WHERE id NOT IN (SELECT post_id FROM $tags WHERE name IN ('dont','want','these'))

Como eu conseguiria isso usando a API sqlalchemy?