Skip to main content

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

Project description

https://img.shields.io/travis/mfogel/django-timezone-field.svg https://img.shields.io/coveralls/mfogel/django-timezone-field.svg https://img.shields.io/pypi/dm/django-timezone-field.svg

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

Examples

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
my_inst.save()        # 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() # displays like "America/Los_Angeles"
    timezone2 = TimeZoneFormField(display_GMT_offset=True) # displays like "GMT-08:00 America/Los_Angeles"

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

Installation

  1. From pypi using pip:

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

    INSTALLED_APPS = (
        ...
        'timezone_field',
        ...
    )

Changelog

  • 3.1 (2019-10-02)

    • Officially support django 2.2 (already worked)

    • Add option to display TZ offsets in form field #46

  • 3.0 (2018-09-15)

    • Support django 1.11, 2.0, 2.1

    • Add support for python 3.7

    • Change default human-readable timezone names to exclude underscores (#32 & #37)

  • 2.1 (2018-03-01)

    • Add support for django 1.10, 1.11

    • Add support for python 3.6

    • Add wheel support

    • Support bytes in DB fields (#38 & #39)

  • 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 formatting 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

    tox

    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.

Credits

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.

Source Distribution

django-timezone-field-3.1.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_timezone_field-3.1-py2.py3-none-any.whl (7.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django-timezone-field-3.1.tar.gz.

File metadata

  • Download URL: django-timezone-field-3.1.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for django-timezone-field-3.1.tar.gz
Algorithm Hash digest
SHA256 1a7bbcf984ae191c6dfe713994b4ff4062dc21e47a909356c93e76d027c87c8f
MD5 682803bad6913064571efee33c5dd51e
BLAKE2b-256 47922fefed6e9017924d6db582baf8e106f513a1f4a7b656fa6afbe9085e5df5

See more details on using hashes here.

File details

Details for the file django_timezone_field-3.1-py2.py3-none-any.whl.

File metadata

  • Download URL: django_timezone_field-3.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for django_timezone_field-3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a25af66b86d13709aa8c69a361c1ea68322cda64b5bbf9141fb67b8b44aa4e43
MD5 584039d025cba204c7268c2b4bafe432
BLAKE2b-256 eab29cd38249c0d2c7db697ff292cadcf00806d776ae6f3fa1ce052d85d07ef5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page