Skip to main content

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

Project description

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


Database Field

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

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>"


  1. From pypi using pip:

    pip install django-timezone-field
  2. Add timezone_field to your settings.INSTALLED_APPS:



  • 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

  1. Install tox.

  2. From the repository root, run


    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.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for ambition-django-timezone-field, version 2.0.4
Filename, size File type Python version Upload date Hashes
Filename, size ambition_django_timezone_field-2.0.4-py2.py3-none-any.whl (7.2 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size ambition-django-timezone-field-2.0.4.tar.gz (6.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page