Support SelectQuery on a view
I wonder if it would work just to create a model and have it specify its db_table attribute as the view.  If the view "looks" like one of your existing models, you should also be able to subclass the exisitng model, e.g.:

``` python

class MyModel(Model):
    # fields ...

class MyViewModel(MyModel):
    class Meta:
        db_table = 'this_is_actually_the_view'
```

If I'm missing something essential to the issue please let me know but I belive the above should work.

More to the point, you have raised some excellent points about places where the API is brittle.  I've rewritten peewee from the ground up and am finishing the work before merging it into master, but you can check the branch:
https://github.com/coleifer/peewee/tree/unstable/2.0

It provides better hooks with a lot less insanity :)
 In this case I am using different views for different queries. I have a "Video" object, and I have 3 different views for pulling out videos based on some complicated rules. I forgot to mention that I was going to use RawQuery, which would have almost worked, except RawQuery and flask-peewee don't work well together. flask-peewee assumes a SelectQuery in a few places (like PaginatedQuery).

I will check out the branch in the meantime too though.
 Cool, so just to clarify it won't work to do something like:

``` python

class VideoViewOne(Video):
    class Meta:
        db_table = 'video_view_one'

class VideoViewTwo(Video):
    class Meta:
        db_table = 'video_view_two'
```

And then:

``` python

VideoViewOne.select() # <--- pull video objects out of the view "video_view_one"
```
 Oh... um.... yeah that might work. I think I will need to see how that plays with my flask-peewee setup. Thanks for the tip.
 Just wanted to say I finally made the jump to your 2.0 release. Really nice. I really like the changes to the query language. I also was able to kill my fork and extend flask-peewee with my JSONField stuff pretty easily.

Thanks for a nice set of frameworks.

I am writing some queries that are beyond what peewee can/should do. Specifically I need to be able to union together a result set. I figured I would just create a view, and then somehow set that view into the SelectQuery. I think that would be a really nice simple option, where you just use the view name in place of 

```
self.model._meta.db_table
```

I ended up subclassing, but it isn't easy since the clone method always creates a new instance of SelectQuery, so each call to .where, etc, ends up getting rid of my subclass. Would also be nice if clone could use the current class name to create the instance, so I could just override clone, call super, and then copy the viewname as well.

It also isn't easy b/c sql_meta uses db_table directly

```
table = self.qn(self.model._meta.db_table)
```

vs calling a method like get_table or something that could be overridden.

I think it makes more sense though just to support an optional "view" parameter?

Thanks for any feedback.
