То, как я это делаю, использует имена переменных времени pytz. Я настроил свой список, чтобы отразить только те, которые мне нужны, т.е.
TIMEZONES = (
'Canada/Atlantic',
'Canada/Central',
'Canada/Eastern',
'Canada/Mountain',
'Canada/Pacific',
)
Я тогда класс местоположения, который устанавливает часовой пояс как Char поле как таковом:
class Location(models.Model):
....
time_zone = models.CharField(max_length=100, blank=True, null=True, choices=TIMEZONES) # 64 min
....
Примечание я поставил пустой & нуль to True, чтобы сделать поле необязательным. Взгляните на django-timezone-field fields.py для дальнейших идей.
Чтобы использовать это в моем коде с pytz, импортировать часовой пояс:
from pytz import timezone
import datetime
from locations.models import Location # my object that has the time_zone field
loc = Location.objects.get(pk=1) #get existing location or your object that has time_zone field
utc = pytz.utc
some_utc_date = datetime.datetime(2002, 10, 27, 6, 0, 0).replace(tzinfo=utc) #tz aware
some_date.astimezone(timezone(loc.time_zone))
Заменить datetime.datetime (2002, 10, 27, 6, 0, 0) с поля даты и времени, которое соответствует вашему положению или конкретный объект, который имеет поле time_zone. В моем случае я сохраняю все поля даты в формате UTC в коллекции MongoDB. Когда я извлекаю данные и хочу создать читаемый пользователем вывод, я использую вышеуказанный метод, чтобы показать дату на выходе. Вы также можете создать собственный тег для обработки этого в шаблонах. Дополнительную информацию см. В документе pytz.
Я хочу заполнив мое заявление на где-то так, когда он/она работает это приложение должно быть pytz в рабочей среде? –