Allowing models to influence QuerySet.update
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.
Change History
(8)
Needs documentation: |
set
|
Needs tests: |
set
|
Patch needs improvement: |
set
|
Triage Stage: |
Unreviewed → Design decision needed
|
Needs documentation: |
unset
|
Needs tests: |
unset
|
Patch needs improvement: |
unset
|
Cc: |
slinkp@… added
|
Easy pickings: |
unset
|
UI/UX: |
unset
|
Resolution: |
→ wontfix
|
Status: |
new → closed
|
Patch has been moved to github, tests and documentation are added as separate commits. See: http://github.com/seveas/django/tree/seveas/ticket13021