Do validation in clean() and cache original values

Not only does this mean that the validation code will also be called when the DataSet's modelform is saved but by storing the original values when the model's created we avoid the need to do a DB query each time the model's saved.