Fix Python – Why doesn’t django’s call full_clean()?


Asked By – Aaron

I’m just curious if anyone knows if there’s good reason why django’s orm doesn’t call ‘full_clean’ on a model unless it is being saved as part of a model form.

Note that full_clean() will not be called automatically when you call your model’s save() method. You’ll need to call it manually when you want to run one-step model validation for your own manually created models.
django’s full clean doc

(NOTE: quote updated for Django 1.6… previous django docs had a caveat about ModelForms as well.)

Are there good reasons why people wouldn’t want this behavior? I’d think if you took the time to add validation to a model, you’d want that validation run every time the model is saved.

I know how to get everything to work properly, I’m just looking for an explanation.

Now we will see solution for issue: Why doesn’t django’s call full_clean()?


AFAIK, this is because of backwards compatibility. There are also problems with ModelForms with excluded fields, models with default values, pre_save() signals, etc.

Sources you might be intrested in:

This question is answered By – lqc

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0