SQLAlchemy, jak odfiltrować dzieci od wielu do wielu

Pytałem o problem, który miałem w SQLAlchemy i znalazłem rozwiązanie podczas pisania. I tak publikuję, na wypadek gdyby ktoś komuś pomógł :)

Powiedzmy, że mam wiele do wielu relacji, które wydają się działać (przynajmniej mogę pobrać dzieci). Trzy tabele: posty, tagi i post_tags.

import sqlalchemy as alc

class Tag(Base):
    __tablename__ = 'tags'

    id = alc.Column(alc.Integer, primary_key=True)
    name = alc.Column(alc.String)
    accepted = alc.Column(alc.Integer)

    posts = relationship('Post', secondary=post_tags)



class Post(Base):

    __tablename__ = 'posts'

    id = alc.Column(alc.Integer, primary_key=True)
    text = alc.Column(alc.String)
    date_out = alc.Column(alc.Date)

    tags = relationship('Mistake_Code', secondary=post_tags)

# relational table
post_tags = alc.Table('check_point_mistakes',
                       Base.metadata,
                       alc.Column('post_id', alc.Integer,ForeignKey('posts.id')),
                       alc.Column('tag_id', alc.Integer, alc.ForeignKey('tags.id')))

Teraz mój problem polega na tym, że chcę najpierw filtrować przez date_out w Post. Mogę to uzyskać w ten sposób:

# assume start_date and end_date

query = (
            session.query(Post)
                   .filter(Post.date_out.between(start_date, end_date))
 )

Ale jak jednocześnie filtrować według tagów?

questionAnswers(1)

yourAnswerToTheQuestion