diff options
| author | Jannis Leidel <jannis@leidel.info> | 2012-01-24 10:00:39 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2012-01-24 10:00:39 +0000 |
| commit | 8f168976d68282a6180d2af4e12c4f3b6dd09c85 (patch) | |
| tree | 28df3f03ba5503faca80436ac9de8ec7ccccf94b | |
| parent | 6ae393d74db1f8e553c80951f3eaeb3ba16fc223 (diff) | |
Fixed #17580 -- Made sure datetime.date instances are correctly handled when being passed to a DateTimeField fields and the timezone support is enabled by making it aware using the default timezone.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17392 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/db/models/fields/__init__.py | 6 | ||||
| -rw-r--r-- | tests/modeltests/timezones/tests.py | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 04b13aa5c8..70a7024c26 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -748,7 +748,11 @@ class DateTimeField(DateField): if isinstance(value, datetime.datetime): return value if isinstance(value, datetime.date): - return datetime.datetime(value.year, value.month, value.day) + value = datetime.datetime(value.year, value.month, value.day) + if settings.USE_TZ: + default_timezone = timezone.get_default_timezone() + value = timezone.make_aware(value, default_timezone) + return value value = smart_str(value) diff --git a/tests/modeltests/timezones/tests.py b/tests/modeltests/timezones/tests.py index b46aa0ed8c..41c0016240 100644 --- a/tests/modeltests/timezones/tests.py +++ b/tests/modeltests/timezones/tests.py @@ -262,6 +262,13 @@ class NewDatabaseTests(BaseDateTimeTests): self.assertEqual(event.dt, dt.replace(tzinfo=EAT)) @requires_tz_support + def test_datetime_from_date(self): + dt = datetime.date(2011, 9, 1) + Event.objects.create(dt=dt) + event = Event.objects.get() + self.assertEqual(event.dt, datetime.datetime(2011, 9, 1, tzinfo=EAT)) + + @requires_tz_support @skipIf(sys.version_info < (2, 6), "this test requires Python >= 2.6") @skipUnlessDBFeature('supports_microsecond_precision') def test_naive_datetime_with_microsecond(self): |
