Opened 8 years ago

Last modified 6 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: master
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


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 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 Changed 8 years ago by Russell Keith-Magee

Triage Stage: UnreviewedDesign decision needed

Seems like a reasonable idea on the face of it, but needs some more discussion before we formally accept the idea.

comment:2 Changed 7 years ago by Florian Apolloner

Triage Stage: Design decision neededAccepted

I think it would be great to have.

comment:3 Changed 6 years ago by Tim Graham

Patch needs improvement: set
Note: See TracTickets for help on using tickets.
Back to Top