sqlalchemy, выберите, используя список значений дочерних столбцов с обратным включением (не в)

У меня есть типичная связь между сообщениями и тегами (многие теги связаны с одним сообщением) в 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?

Ответы на вопрос(3)

Ваш ответ на вопрос