#35771: Bugs: models.DateField value has not been assigned correct date value
when
auto_now_add is set
-------------------------------------+-------------------------------------
Reporter: Ambitiont109 | Owner: (none)
Type: Bug | Status: new
Component: Database layer | Version: 5.0
(models, ORM) |
Severity: Normal | Resolution:
Keywords: auto_now | Triage Stage:
| Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Ambitiont109:
Old description:
> 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()
> """
New description:
{{{
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()
""
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/35771#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/0107019203c9f32a-32bb7924-0c3b-4ce9-b772-788fd994d94d-000000%40eu-central-1.amazonses.com.