Refs #2443 -- Move the durationfield converter logic.

This reduces how frequently this logic is run significantly.

Thanks to Anssi for the suggestion.
This commit is contained in:
Marc Tamlyn 2014-12-23 10:11:28 +00:00
parent 5ca82e710e
commit 962bb9b6bd
2 changed files with 6 additions and 2 deletions

View File

@ -1262,8 +1262,6 @@ class BaseDatabaseOperations(object):
Some field types on some backends do not provide data in the correct
format, this is the hook for coverter functions.
"""
if not self.connection.features.has_native_duration_field and internal_type == 'DurationField':
return [self.convert_durationfield_value]
return []
def convert_durationfield_value(self, value, field):

View File

@ -1614,6 +1614,12 @@ class DurationField(Field):
return value
return value.total_seconds() * 1000000
def get_db_converters(self, connection):
converters = []
if not connection.features.has_native_duration_field:
converters.append(connection.ops.convert_durationfield_value)
return converters + super(DurationField, self).get_db_converters(connection)
def value_to_string(self, obj):
val = self._get_val_from_obj(obj)
return '' if val is None else duration_string(val)