Since `Model` doesn't validate by default, a pattern for aggressive validation is something like:

```
class ValidationModel(models.Model):
    def save(self, force_insert=False, force_update=False, **kwargs):
        if not (force_insert or force_update):
            self.full_clean() # Will raise ValidationError if needed
        super(ValidatingModel, self).save(force_insert, force_update, **kwargs)
```

And then

```
class Currency(ValidatingModel):
   ...
```

(This won't protect you if you use `update` via a `QuerySet`... I'm not sure anything will. Maybe using `pre_save` signals.)