Could we move this to `full_clean()` or `validate()` ?