[Django] #26239: Document auto_now behavior with QuerySet.update()

8 views
Skip to first unread message

Django

unread,
Feb 18, 2016, 5:37:43 PM2/18/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
-------------------------------+--------------------
Reporter: boussouira | Owner: nobody
Type: Uncategorized | Status: new
Component: Documentation | Version: 1.8
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------
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())
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/26239>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Feb 18, 2016, 6:50:08 PM2/18/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Documentation | Version: 1.8
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by timgraham):

* needs_better_patch: => 0
* needs_tests: => 0
* easy: 0 => 1
* needs_docs: => 0
* type: Uncategorized => Cleanup/optimization
* stage: Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:1>

Django

unread,
Feb 20, 2016, 1:30:26 AM2/20/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by AMaini503):

Replying to [ticket:26239 boussouira]:


> 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())
> }}}

--> 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 ?

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:2>

Django

unread,
Mar 10, 2016, 4:17:42 AM3/10/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by honsdomi):

Replying to [comment:2 AMaini503]:


> Replying to [ticket:26239 boussouira]:

> > 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())
> > }}}
>

> --> 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 ?

Hello, can someone confirm if this requires modifying code or just
documentation?

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:3>

Django

unread,
Mar 10, 2016, 6:53:11 AM3/10/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by boussouira):

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.

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:4>

Django

unread,
Mar 10, 2016, 6:44:24 PM3/10/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: duane9
Type: Cleanup/optimization | Status: assigned
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by duane9):

* status: new => assigned
* owner: nobody => duane9


--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:5>

Django

unread,
Mar 10, 2016, 7:11:52 PM3/10/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: duane9
Type: Cleanup/optimization | Status: assigned
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by duane9):

Replying to [comment:4 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 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.

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:6>

Django

unread,
Mar 10, 2016, 7:14:43 PM3/10/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: duane9
Type: Cleanup/optimization | Status: assigned
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by boussouira):

I think that is good enough.
Thank you
> [comment:6 duane9]:


> 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?

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:7>

Django

unread,
Mar 10, 2016, 7:41:13 PM3/10/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: duane9
Type: Cleanup/optimization | Status: assigned
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by timgraham):

How about adding something like, "The field is not updated when using
`QuerySet.update()` to update other fields."

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:8>

Django

unread,
Mar 12, 2016, 11:24:04 AM3/12/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: duane9
Type: Cleanup/optimization | Status: assigned
Component: Documentation | Version: 1.8

Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by duane9):

Okay, I added a note to that effect.
https://github.com/django/django/pull/6281

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:9>

Django

unread,
Mar 12, 2016, 12:42:27 PM3/12/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: duane9
Type: Cleanup/optimization | Status: closed
Component: Documentation | Version: 1.8
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by Tim Graham <timograham@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"ca5c05ddbe91f4aae38c4543240dbda5f1fb1db2" ca5c05d]:
{{{
#!CommitTicketReference repository=""
revision="ca5c05ddbe91f4aae38c4543240dbda5f1fb1db2"
Fixed #26239 -- Added a note about how auto_now works with
QuerySet.update().
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:10>

Django

unread,
Mar 12, 2016, 12:42:46 PM3/12/16
to django-...@googlegroups.com
#26239: Document auto_now behavior with QuerySet.update()
--------------------------------------+------------------------------------
Reporter: boussouira | Owner: duane9
Type: Cleanup/optimization | Status: closed
Component: Documentation | Version: 1.8

Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------------+------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"421ad283d3a0c9814e6cf5b87b393dce09f59474" 421ad283]:
{{{
#!CommitTicketReference repository=""
revision="421ad283d3a0c9814e6cf5b87b393dce09f59474"
[1.9.x] Fixed #26239 -- Added a note about how auto_now works with
QuerySet.update().

Backport of ca5c05ddbe91f4aae38c4543240dbda5f1fb1db2 from master
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/26239#comment:11>

Reply all
Reply to author
Forward
0 new messages