I have a couple of actions to perform when saving a models, especially from the admin. I capitalize a couple of fields and check to make sure that either one field or the other is filled. I also create the field slug. RIght now these are split between overriding the clean and the save functions. It works now, but I am curious on when to use each. I looked through the docs, and I couldn't find specifically which to use when.
相关问题
- how to define constructor for Python's new Nam
- streaming md5sum of contents of a large remote tar
- How to get the background from multiple images by
- Django __str__ returned non-string (type NoneType)
- Evil ctypes hack in python
You should use clean to do validation-related work, and to parse/change/otherwise clean the input. Capitalizing fields and generating a slug can happen here. I also use clean to force a field like
post_type
to a specific value in proxy models. If you raisedjango.core.exceptions.ValidationError('error text')
inside clean, the'error text'
is added to theform.non_field_errors
.Save is the place to change the way a model is actually saved. For instance, I've used save to create a crop of an uploaded picture.
ValidationError
s are not caught if raised here, and I feel like that's the most important practical difference between the two.