Can I inspect a sqlalchemy query object to find the already joined tables? : <p>I'm trying to programmatically build a search query, and to do so, I'm joining a table.</p>

<pre><code>class User(db.Model):
    id = db.Column(db.Integer(), primary_key=True)

class Tag(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
    title = db.Column(db.String(128))
    description = db.Column(db.String(128))
</code></pre>

<p>This is a bit of a contrived example - I hope it makes sense.</p>

<p>Say my search function looks something like:</p>

<pre><code>def search(title_arg, desc_arg):
    query = User.query
    if title_arg:
        query = query.join(Tag)
        query = query.filter(Tag.title.contains(title_arg))
    if desc_arg:
        query = query.join(Tag)
        query = query.filter(Tag.description.contains(desc_arg))

    return query
</code></pre>

<p>Previously, I’ve kept track of what tables that have already been joined in a list, and if the table is in the list, assume it’s already joined, and just add the filter.</p>

<p>It would be cool if I could look at the query object, see that <code>Tag</code> is already joined, and skip it if so. I have some more complex query building that would really benefit from this.</p>

<p>If there’s a completely different strategy for query building for searches that I’ve missed, that would be great too. Or, if the above code is fine if I join the table twice, that's great info as well. Any help is incredibly appreciated!!!</p>
