Opened 12 years ago
Last modified 11 years ago
#19396 new Cleanup/optimization
Allow customized ModelState classes
Reported by: | Anssi Kääriäinen | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | yes |
Easy pickings: | no | UI/UX: | no |
Description
By allowing classes to define customized ModelState classes and by introducing some hooks into model saving custom Model subclasses can implement some often requested things:
- Automatic primary key updates
- Save only changed data
- Proper optimistic locking
Two of the above ideas are implemented in the added tests in https://github.com/akaariai/django/compare/akaariai:model_save_refactor...akaariai:model_state_improvements. The patch is based on model_save_refactor from #16649.
The cost of this is a performance penalty of a 3-5% for instantiating single-field models from DB (query_all benchmark of djangobench), less for multi-field models.
I'd like to keep this private API for a while until more is known about what kinds of states are needed.
Change History (3)
comment:1 by , 12 years ago
Triage Stage: | Unreviewed → Design decision needed |
---|
comment:2 by , 12 years ago
Triage Stage: | Design decision needed → Accepted |
---|
I think it would be great to have.
comment:3 by , 11 years ago
Patch needs improvement: | set |
---|
Seems like a reasonable idea on the face of it, but needs some more discussion before we formally accept the idea.