As you can see from the docs there is a lot you can do. I recommend leaving Admin to do most of the work. I do, however, use my own ModelForm instead of the default ModelAdmin form to override the `clean()` method (
modelforms (validation)). With a custom form, I can do a more comprehensive validation of the user's input.