Failed constraints raises IntegrityError but exceeding max_length raises DataEror with postgres
These errors are raised by postgres and passed on through psycopg2, which determines what error type to raise. Typically one would perform validation beforehand to eliminate something as simple as an over-length violation.
```py
# shipping info model
class ShippingInfo(BaseModel):
    id = peewee.AutoField(primary_key=True, unique=True)
    country = peewee.CharField(null=False)
    address = peewee.CharField(null=False)
    postal_code = peewee.CharField(null=False, max_length=7, constraints=[peewee.Check('length(postal_code) = 7')])
    city = peewee.CharField(null=False)
    province = peewee.CharField(null=False)
```

I don't know if it's intended but it makes catching for errors a bit trickier 

```py
try:
    shipping_info_instance = ShippingInfo.create(**shipping_info)
    order.shipping_info = shipping_info_instance
except peewee.IntegrityError, peewee.DataError:
    return errors.error_handler("orders", "invalid-fields",  "Les informations d'achat ne sont pas correctes"), 422
```