django-fullclean
django-fullclean copied to clipboard
Selectively disable full clean in performance-critical code
Hi there,
This is a great little package, we're using it in most of our projects at work. It certainly improves stability a lot by always enforcing that validations are run. However, lately I've noticed in a performance-critical piece of code some validations cause extra database queries (mostly those where we use uniqueness constraints). In these situations I also know that these constraints won't be violated for existing records where we're just updating some timestamp fields and such.
Since I don't want to disable full clean and go back to manually calling full_clean
everywhere (which is very error-prone), I'm currently resorting to manually building an update statement with Case
to completely bypass Django validations in these critical sections, but this is fiddly and results in a lot of extra code that I think isn't really necessary. It would be helpful if there were something like a context manager or some flag you can pass to save()
to tell it to skip full clean.