django-timezone-field travis-ci python

A Django app providing database and form fields for pytz timezone objects.

3 years after


.. image:: :target:

.. image:: :target:

.. image:: :target:

A Django app providing database and form fields for pytz__ timezone objects.


Database Field

.. code:: python

    import pytz
    from django.db import models
    from timezone_field import TimeZoneField

    class MyModel(models.Model):
        timezone1 = TimeZoneField(default='Europe/London') # defaults supported
        timezone2 = TimeZoneField()
        timezone3 = TimeZoneField()

    my_inst = MyModel(
        timezone1='America/Los_Angeles',    # assignment of a string
        timezone2=pytz.timezone('Turkey'),  # assignment of a pytz.DstTzInfo
        timezone3=pytz.UTC,                 # assignment of pytz.UTC singleton
    my_inst.full_clean()  # validates against pytz.common_timezones        # values stored in DB as strings

    tz = my_inst.timezone1  # values retrieved as pytz objects
    repr(tz)                # "<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>"

Form Field

.. code:: python

from django import forms
from timezone_field import TimeZoneFormField

class MyForm(forms.Form):
    timezone = TimeZoneFormField()

my_form = MyForm({
    'timezone': 'America/Los_Angeles',
my_form.full_clean()  # validates against pytz.common_timezones

tz = my_form.cleaned_data['timezone']  # values retrieved as pytz objects
repr(tz)                               # "<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>"


. From pypi using pip:

.. code:: sh

    pip install django-timezone-field

. Add timezone_field to your settings.INSTALLED_APPS__:

.. code:: python



  • 2.0 (2016-01-31)

    • Drop support for django 1.7, add support for django 1.9
    • Drop support for python 3.2, 3.3, add support for python 3.5
    • Remove tests from source distribution
  • 1.3 (2015-10-12)

    • Drop support for django 1.6, add support for django 1.8
    • Various bug fixes__
  • 1.2 (2015-02-05)

    • For form field, changed default list of accepted timezones from pytz.all_timezones to pytz.common_timezones, to match DB field behavior.
  • 1.1 (2014-10-05)

    • Django 1.7 compatibility
    • Added support for formating choices kwarg as [[<str>, <str>], ...], in addition to previous format of [[<pytz.timezone>, <str>], ...].
    • Changed default list of accepted timezones from pytz.all_timezones to pytz.common_timezones. If you have timezones in your DB that are in pytz.all_timezones but not in pytz.common_timezones, this is a backward-incompatible change. Old behavior can be restored by specifying choices=[(tz, tz) for tz in pytz.all_timezones] in your model definition.
  • 1.0 (2013-08-04)

    • Initial release as timezone_field.

Running the Tests

. Install tox__.

. From the repository root, run

.. code:: sh


Postgres will need to be running locally, and sqlite will need to be
installed in order for tox to do its job.

Found a Bug?

To file a bug or submit a patch, please head over to django-timezone-field on github__.


Originally adapted from Brian Rosner's django-timezones. The full list of contributors is available on github. __

Related Repositories



Simple, fast user news feeds for Django ...



A sample Django application illustrating some time zone traps for the unwary. ...



Django timezones localization app based on global cache (similar to django.utils ...



Custom query expressions for Django, built on top of PostgreSQL functions ...



An easy-to-use implementation of Creation Methods for Django, backed by Faker. ...

Top Contributors

mfogel brosner dougn tkhyn mpdaugherty azzy apenwarr jtauber jezdez zemanel


-   2.0rc1 zip tar
-   1.3 zip tar
-   1.2 zip tar
-   1.1 zip tar
-   1.0 zip tar
-   0.4 zip tar
-   0.3.2 zip tar
-   0.3.1 zip tar
-   0.3.0 zip tar
-   0.3.0b4 zip tar
-   0.3.0b3 zip tar
-   0.3.0b2 zip tar
-   0.3.0b1 zip tar
-   0.3.0b zip tar
-   0.3.0a zip tar