.switch() and .join_from() for CTE's
The join context only really has meaning for model-select, where peewee utilizes the structure of the model relationships to infer predicates and other things. A CTE can join multiple times, you just need to specify the appropriate predicate in the `on=` clause. That makes sense.

Wouldn't join context also be helpful for chains of joins from a CTE? In those cases you'd also be able to take advantage of the structure of intermediate models.

This is definitely less important than the original issue I thought I'd found, though I did actually run into it in my code just now. Well, the way you create a cte in the first place is using the regular model select apis:

http://docs.peewee-orm.com/en/latest/peewee/query_examples.html#find-the-upward-recommendation-chain-for-member-id-27 This doc section also shows how CTE is commonly used. In short, you write your select query regularly, and at the end you use the `cte()` method:

http://docs.peewee-orm.com/en/latest/peewee/querying.html#common-table-expressions It’s okay, I got my thing working. Thanks!
It looks to me like the `.switch()` and `.join_from()` methods are only defined on the `ModelSelect` class, meaning it's impossible to join from a CTE to multiple other tables. It might be good to move the join context stuff up the class hierarchy to `Select`, unless there's some reason doing so would be tricky.

Is there a workaround for this? I could join starting from one of the other tables, but I think that can have bad performance implications. Maybe making a new CTE for each join would work.