GeneratedHashField
F-Strings are not supported in Python 2.x and Python 3 < 3.6.
This is why the check fails. I see that, thanks! :+1:  Didn't think it was worth fixing right away since I imagine changes will be needed anyway, if this is at all even wanted.  I'm not interested in maintaining or supporting this, but feel free to offer it as a 3rd-party extension. Thank you for your input.

I don't see anything similar to [Computed](https://docs.sqlalchemy.org/en/13/core/defaults.html?highlight=server#computed-generated-always-as-columns) offered by Peewee (at least I couldn't locate anything in the docs), or is this the right approach? No but since Postgres, MySQL and Sqlite have roughly the same syntax it's probably worth adding. I will look into this. As I was implementing this, I ran into a number of subtle differences between the Sqlite, MySQL, MariaDB and Postgres implementations. For now, I think users will be best-off using the existing `constraints=` parameter to specify a generated column definition, although the code is in `feature/computed` branch if you want to fork it.

```python

constraint = SQL("generated always as (first || ' ' || last)")
full_name = CharField(constraints=[constraint])
``` Lovely! Thanks for the tip, I really appreciate it. 
Hi! :wave: 

First, thank you so much for such a great library. :+1: 

Feature request :ribbon: 
---
I would like to make use of PostgreSQL's `GENERATED ALWAYS AS` statement, for computing a hashed key based on one or more other fields. Specifically for a generating a hash

Solution :question: 
---
I've provided a prototype which accomplishes this, but it could use some updates for generalization (maybe not hash, different types, etc). Do you think this is worth pursuing or maybe best left as a custom implementation for private use? I suppose it is similar to SqlAlchemy's [Computed](https://docs.sqlalchemy.org/en/13/core/defaults.html?highlight=server#computed-generated-always-as-columns)