Opened 14 months ago
Closed 14 months ago
#35771 closed Bug (duplicate)
Bugs: models.DateField value has not been assigned correct date value when auto_now_add is set
| Reported by: | Racing Car | Owned by: | |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 5.0 |
| Severity: | Normal | Keywords: | auto_now |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
class Vote(models.Model):
class Points(models.IntegerChoices):
Top = 3
Second = 2
Third = 1
points: models.IntegerField = models.IntegerField(choices=Points.choices, default=Points.Top)
date: models.DateField = models.DateField(auto_now_add=True)
from django.utils import timezone
timezone.now() # datetime.datetime(2024, 9, 18, 3, 7, 3, 608467, tzinfo=datetime.timezone.utc)
timezone.now().date()# datetime.date(2024, 9, 18)
import datetime
datetime.datetime.now() #datetime.datetime(2024, 9, 17, 23, 7, 14, 337114) My local pc timezone is UTC-4
datetime.date.today() #datetime.date(2024, 9, 17)
v = Vote(points=Vote.Points.Top)
v.save()
v.date # Expected value is datetime.date(2024, 9, 18) since I enabled USE_TZ=True in settings.py
# current value is datetime.date(2024, 9, 17)
"""
I figured it out myself and in `pre_save` function of models.DateField class, we should use timezone.now().date() instead of datetime.date.today()
""
Change History (2)
comment:1 by , 14 months ago
| Description: | modified (diff) |
|---|
comment:2 by , 14 months ago
| Resolution: | → duplicate |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Duplicate of #32320