Opened 7 years ago

Closed 5 years ago

Last modified 5 years ago

#13021 closed New feature (wontfix)

Allowing models to influence QuerySet.update

Reported by: Dennis Kaarsemaker Owned by: Dennis Kaarsemaker
Component: Database layer (models, ORM) Version: master
Severity: Normal Keywords: update
Cc: slinkp@… Triage Stage: Design decision needed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


I'd like to have a bit more control over what update() does, e.g. for auditing purposes. I know that I can simply write a few lines of code near every update() call to do what I want, but that violates DRY.

Attached patch adds a few new features:

  • pre_update and post_update signals
  • a pre_update method for Field that does nothing
  • a pre_update method for DateField for auto_now magic
  • an update() method for Model that calls pre_update for all fields. This method is a classmethod
  • a patched QuerySet.update() that
    • Sends the pre_update and post_update signals
    • Calls the models update method to update the kwargs dict

The patch is untested, but should give a good idea of what I want to achieve. Is this approach suitable for inclusion in django ? If so, I will complete the patch, add tests and documentation and will submit it for inclusion at the appropriate time.

Attachments (1)

improved_update.patch (3.0 KB) - added by Dennis Kaarsemaker 7 years ago.

Download all attachments as: .zip

Change History (8)

Changed 7 years ago by Dennis Kaarsemaker

Attachment: improved_update.patch added

comment:1 Changed 7 years ago by Dennis Kaarsemaker

Needs documentation: set
Needs tests: set
Patch needs improvement: set
Triage Stage: UnreviewedDesign decision needed

comment:2 Changed 7 years ago by Dennis Kaarsemaker

Needs documentation: unset
Needs tests: unset
Patch needs improvement: unset

Patch has been moved to github, tests and documentation are added as separate commits. See:

comment:3 Changed 6 years ago by Luke Plant

Type: New feature

comment:4 Changed 6 years ago by Luke Plant

Severity: Normal

comment:6 Changed 5 years ago by Luke Plant

Resolution: wontfix
Status: newclosed

For the reasons given by Jacob in that thread, I'm going to WONTFIX this.

Note: See TracTickets for help on using tickets.
Back to Top