Work in progress
Just before continuing do you think that I should continue implementing a custom Model class or you have a better idea on how to implement this?

I will also look at the implementation of the InsertQuery and avoid code duplication.
 I'll take a look soon. One thing, you can probably just modify the existing `UpdateQuery` rather than putting this in `postgres_ext`. That's how I handled `INSERT...RETURNING` in the existing code.
 I might try my hand at an implementation -- by doing so I'd like to explore some other ways of implementing this.
 This is what I've come up with: https://github.com/coleifer/peewee/compare/HEAD...feature/update-returning
 I noticed that you put all this code in the `postgresql_ext` module. My preference, since I imagine _some_ DBs besides postgres have this feature, is to use database feature flags to allow/disallow access to the `returning` APIs.

My thoughts on the implementation can be found here: https://github.com/coleifer/peewee/compare/HEAD...feature/update-returning
 You know, looking around it seems like `DELETE` and `INSERT` both support `returning` as well. I think I'll update my patch to allow `returning` on delete and insert.
 I've added support for `RETURNING` with `UPDATE`, `INSERT` and `DELETE` in my branch `feature/update-returning`:

https://github.com/coleifer/peewee/compare/HEAD...feature/update-returning

I think I'm going to go ahead and merge it today.
 Just saw your patch (was on holidays), seems really cool, thanks for the quick implementation :)
 Cool, thanks for sharing your code, really helpful!

Here is a first implementation just showing part of the code.

I have to fix the ability to iter through results
I also have an issue with the model class, If you have a better idea than creating a dedicated model class...

It breaks the tests but this is a work in progress ;)

linked to #647
