#26239 closed Cleanup/optimization (fixed)
Document auto_now behavior with QuerySet.update()
Reported by: | Ahmed Saidi | Owned by: | Duane Hilton |
---|---|---|---|
Component: | Documentation | Version: | 1.8 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
I don't know if this is a bug or not, but when using update()
, the DateTime fields with auto_now
are not updated to the current time. The documentation of auto_now
doesn't say anything about that situation.
For example:
# This won't update `updated_at`: Order.objects.filter(user_id=7).update(check_count=3) # You have to explicitly include it in update() Order.objects.filter(user_id=7).update(check_count=3, updated_at=timezone.now())
Change History (11)
comment:1 by , 9 years ago
Easy pickings: | set |
---|---|
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Cleanup/optimization |
comment:3 by , 9 years ago
Hello, can someone confirm if this requires modifying code or just documentation?
follow-up: 6 comment:4 by , 9 years ago
Hi, Sorry for delay in replay.
I think documentation change is better, so existing applications won't have to do any changes to upgrade.
As i understand now, you must call save()
for the auto-update field to be populated, which is fine, but explicitly mentioning that in the documentation good for new users (like me).
Thank you.
comment:5 by , 9 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
follow-up: 7 comment:6 by , 9 years ago
Replying to boussouira:
I think the documentation already specifies this: "Automatically set the field to now every time the object is saved."
https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.DateField.auto_now
Does the documentation need something more?
Hi, Sorry for delay in replay.
I think documentation change is better, so existing applications won't have to do any changes to upgrade.
As i understand now, you must callsave()
for the auto-update field to be populated, which is fine, but explicitly mentioning that in the documentation good for new users (like me).
Thank you.
follow-up: 9 comment:8 by , 9 years ago
How about adding something like, "The field is not updated when using QuerySet.update()
to update other fields."
comment:9 by , 9 years ago
Okay, I added a note to that effect. https://github.com/django/django/pull/6281
I will try to work on this. But should update be modified to include timestamp by itself or documentation should be altered to state that timestamp needs to be passed explicitly ?