Welcome to thecut-durationfield
This app provides a custom Django model field,
related form fields and widgets.
RelativeDeltaField stores time durations
using ISO 8601 representations, and returns
objects which may be used directly with
This project was inspired by packages such as django-durationfield. However, this project focuses on:
- providing a database-agnostic, standards-compliant way of storing the durations in the database (using ISO 8601).
dateutil.relativedeltaobjects that can be used to perform calculations on
Note that django-durationfield provides the ability to filter querysets
based on the relative size of the stored duration, which is not possible with
this project. I.e., you can't use
__gt etc., when filtering
by fields provided by this project.
The full documentation is at https://thecut-durationfield.readthedocs.org.
thecut-durationfield using the installation instructions found in the documentation.
from django.db import models from datetime import datetime from thecut.durationfield.models import RelativeDeltaField class MyModel(models.Model): duration = RelativeDeltaField(blank=True, null=True) my_instance = MyModel(duration='P7D') datetime(2014, 1, 1) + my_instance.duration # datetime(2014, 1, 8, 0, 0)
Two form fields are provided:
from django import forms from thecut.durationfield.models import RelativeDeltaChoiceField DURATIONS = [ ('', 'Never'), ('P7D', 'One week'), ('P1M', 'One month'), ] class MyForm(forms.ModelForm): duration = RelativeDeltaChoiceField(choices=DURATIONS)
or, if you'd prefer to type in the (ISO 8601 compliant) value manually:
from django import forms from thecut.durationfield.forms import RelativeDeltaTextInput class MyForm(forms.ModelForm): duration = RelativeDeltaTextInput()