Opened 5 years ago

Closed 4 years ago

Last modified 3 years ago

#13021 closed New feature (wontfix)

Allowing models to influence QuerySet.update

Reported by: seveas Owned by: seveas
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

Description

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 seveas 5 years ago.

Download all attachments as: .zip

Change History (8)

Changed 5 years ago by seveas

comment:1 Changed 5 years ago by seveas

  • Needs documentation set
  • Needs tests set
  • Patch needs improvement set
  • Triage Stage changed from Unreviewed to Design decision needed

comment:2 Changed 5 years ago by seveas

  • 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: http://github.com/seveas/django/tree/seveas/ticket13021

comment:3 Changed 4 years ago by lukeplant

  • Type set to New feature

comment:4 Changed 4 years ago by lukeplant

  • Severity set to Normal

comment:6 Changed 4 years ago by lukeplant

  • Resolution set to wontfix
  • Status changed from new to closed

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