From 48c0460605d64576a66c601e59ae5bca8853447f Mon Sep 17 00:00:00 2001 From: Boulder Sprinters Date: Fri, 13 Apr 2007 17:50:19 +0000 Subject: [PATCH] boulder-oracle-sprint: Made DateField.get_db_prep_save convert datetime.date objects to datetime.datetime, since cx_Oracle doesn't handle datetime.date under Python 2.3. git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@5006 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/fields/__init__.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 657ac4d47f..89520f6c86 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -494,14 +494,15 @@ class DateField(Field): def get_db_prep_save(self, value): # Casts dates into string format for entry into database. - if isinstance(value, datetime.datetime): - if settings.DATABASE_ENGINE != 'oracle': - # Oracle does not need a string conversion + if settings.DATABASE_ENGINE != 'oracle': + if isinstance(value, datetime.datetime): value = value.date().strftime('%Y-%m-%d') - elif isinstance(value, datetime.date): - if settings.DATABASE_ENGINE != 'oracle': - # Oracle does not need a string conversion + elif isinstance(value, datetime.date): value = value.strftime('%Y-%m-%d') + else: + # cx_Oracle needs a conversion to datetime.datetime instead. + if isinstance(value, datetime.date): + value = datetime.datetime.combine(value, datetime.time()) return Field.get_db_prep_save(self, value) def get_manipulator_field_objs(self):