Opened 4 months ago

Closed 4 months ago

Last modified 4 months ago

#35499 closed Bug (duplicate)

Issue with auto_now=True DateTimefield and update_fields

Reported by: Mohamed El-Kalioby Owned by: nobody
Component: Database layer (models, ORM) Version: 4.2
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Let's assume we have the following model


class Order(models.Model):
     name = models.Charfield(max_length=25)
     status = models.CharField(max_length=50, default="Received")
     order_date = models.DateTimeField(auto_now_add=True)
     last_update = models.DateTimeField(auto_now=True)

Now in one of the views, we want to update the status to "Ready for Shipping" so we write the following


order.status = "Ready to Shipping"
order.save(update_fields=['status'])

The issue now is that the 'last_update' field won't be updated in the database as it was NOT included in the update_fields. Which I think is dangerous as now the developer has to add the field manually, and even there is no warning or exception that he/she didn't add last_update field

Change History (1)

comment:1 by Simon Charette, 4 months ago

Resolution: duplicate
Status: newclosed

This is documented and has been discussed plenty already. Please take a minute to search the bug tracker before filling a new report as pointed out in the Please read this first section. Both auto_now and update_fields being options introduced in Django more than 10 years ago it is very likely that someone else ran into the same problem as you already. When in doubt rely on support channels before opening a ticket.

Duplicate of #22981 and #30319 which were both wont-fix'ed.

Version 0, edited 4 months ago by Simon Charette (next)
Note: See TracTickets for help on using tickets.
Back to Top