diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index eb70ad9861..b13fb1e9d5 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -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): diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index e8e6750f1e..6a56603359 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -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)