A Django app providing database and form fields for split datetime/time and pytz timezone objects.
Project description
Here is how it looks like.
Written on top of django-timezone-field.
A Django app providing database and form fields for split datetime/time and pytz timezone objects.
Use
SplitDateTimeTimeZoneField
in place offorms.DateTimeField
.Use
SplitTimeTimeZoneField
in place offorms.TimeField
.
The setting USE_TZ_FIELDS = True
will convert all admin.ModelAdmin
to use SplitDateTimeTimeZoneField
for models.DateTimeField
and SplitTimeTimeZoneField
for models.TimeField
.
Requires USE_TZ = True
in settings.py
Note
If using a database that does not support timezone-aware times then the initial values of model forms will always be in the UTC timezone.
Form Field
import pytz
from django import http
from django import forms
from django.utils import timezone
from django.forms.util import to_current_timezone
from django.conf import settings
from datetimezone_field import SplitDateTimeTimeZoneField, \
SplitTimeTimeZoneField
def index(request):
class MyForm(forms.Form):
a_datetime = SplitDateTimeTimeZoneField()
a_time = SplitTimeTimeZoneField()
tz = pytz.timezone("Australia/Sydney")
timezone.activate(tz)
now = to_current_timezone(timezone.now()).replace(tzinfo=tz)
my_form = MyForm(initial={
'a_datetime': now,
'a_time': now.time().replace(tzinfo=now.tzinfo)
})
return http.HttpResponse(my_form.as_p())
Installation
-
pip install django-datetimezone-field
Add
timezone_field
anddatetimezone_field
to yoursettings.INSTALLED_APPS
INSTALLED_APPS = (
...
timezone_field,
datetimezone_field,
...
)
Running sample project
cd test/sample_project
virtualenv sample-env
source sample-env/bin/activate
pip install -r requirements.txt
python manage.py syncdb
python manage.py runserver
TODO
Unit tests
Found a Bug?
To file a bug or submit a patch, please head over to django-datetimezone-field on github.
Credits
Built on top of Mike Fogel’s django-timezone-field.