diff options
| author | Marc Tamlyn <marc.tamlyn@gmail.com> | 2014-07-24 13:57:24 +0100 |
|---|---|---|
| committer | Marc Tamlyn <marc.tamlyn@gmail.com> | 2014-12-20 18:28:29 +0000 |
| commit | 57554442fe3e209c135e15dda4ea45123e579e58 (patch) | |
| tree | 0ef2cb0e3048d13b82e4c7e81192df6124556a44 /docs/ref | |
| parent | a3d96bee36040975ded8e3bf02e33e48d06f1f16 (diff) | |
Fixed #2443 -- Added DurationField.
A field for storing periods of time - modeled in Python by timedelta. It
is stored in the native interval data type on PostgreSQL and as a bigint
of microseconds on other backends.
Also includes significant changes to the internals of time related maths
in expressions, including the removal of DateModifierNode.
Thanks to Tim and Josh in particular for reviews.
Diffstat (limited to 'docs/ref')
| -rw-r--r-- | docs/ref/forms/fields.txt | 17 | ||||
| -rw-r--r-- | docs/ref/models/fields.txt | 17 | ||||
| -rw-r--r-- | docs/ref/utils.txt | 9 |
3 files changed, 43 insertions, 0 deletions
diff --git a/docs/ref/forms/fields.txt b/docs/ref/forms/fields.txt index 0f13adc249..b63826d9b1 100644 --- a/docs/ref/forms/fields.txt +++ b/docs/ref/forms/fields.txt @@ -546,6 +546,23 @@ For each field, we describe the default widget used if you don't specify The maximum number of decimal places permitted. +``DurationField`` +~~~~~~~~~~~~~~~~~ + +.. versionadded:: 1.8 + +.. class:: DurationField(**kwargs) + + * Default widget: :class:`TextInput` + * Empty value: ``None`` + * Normalizes to: A Python :class:`~python:datetime.timedelta`. + * Validates that the given value is a string which can be converted into a + ``timedelta``. + * Error message keys: ``required``, ``invalid``. + + Accepts any format understood by + :func:`~django.utils.dateparse.parse_duration`. + ``EmailField`` ~~~~~~~~~~~~~~ diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index 2429406d68..203241ae5f 100644 --- a/docs/ref/models/fields.txt +++ b/docs/ref/models/fields.txt @@ -542,6 +542,23 @@ The default form widget for this field is a :class:`~django.forms.TextInput`. :class:`FloatField` and :class:`DecimalField` classes, please see :ref:`FloatField vs. DecimalField <floatfield_vs_decimalfield>`. +``DurationField`` +----------------- + +.. versionadded:: 1.8 + +.. class:: DurationField([**options]) + +A field for storing periods of time - modeled in Python by +:class:`~python:datetime.timedelta`. When used on PostgreSQL, the data type +used is an ``interval``, otherwise a ``bigint`` of microseconds is used. + +.. note:: + + Arithmetic with ``DurationField`` works in most cases. However on all + databases other than PostgreSQL, comparing the value of a ``DurationField`` + to arithmetic on ``DateTimeField`` instances will not work as expected. + ``EmailField`` -------------- diff --git a/docs/ref/utils.txt b/docs/ref/utils.txt index 5939ff6fb1..327f44bbfc 100644 --- a/docs/ref/utils.txt +++ b/docs/ref/utils.txt @@ -158,6 +158,15 @@ The functions defined in this module share the following properties: ``tzinfo`` attribute is a :class:`~django.utils.tzinfo.FixedOffset` instance. +.. function:: parse_duration(value) + + .. versionadded:: 1.8 + + Parses a string and returns a :class:`datetime.timedelta`. + + Expects data in the format ``"DD HH:MM:SS.uuuuuu"`` or as specified by ISO + 8601 (e.g. ``P4DT1H15M20S`` which is equivalent to ``4 1:15:20``). + ``django.utils.decorators`` =========================== |
