Поля часовых поясов Django основаны на часовые пояса pytz, но некоторые часовые пояса последних недействительны для полей. С такой моделью
from django.db import models
from timezone_field import TimeZoneField
class TestModel(models.Model):
timezone_field = TimeZoneField(default='UTC')
def save(self, *args, **kwargs):
self.clean()
self.full_clean()
super().save(*args, **kwargs)
Если я запускаю (в оболочке)
import pytz
from models import TestModel
model = TestModel.objects.get(id=1)
for zone in pytz.all_timezones:
model.timezone = zone
model.save()
я получил
django.core.exceptions.ValidationError: {'timezone': ["Value <DstTzInfo 'Africa/Asmera' LMT+2:27:00 STD> is not a valid choice."]}
Таким образом, он сначала дает сбой на 'Africa/Asmera'
(он также не работает на других, например, 'GMT+0'
).
Любая идея о том, как разрешить это несоответствие? На данный момент пользователь может выбрать часовой пояс на внешнем интерфейсе, который выдаст ошибку бэкэнда (интерфейс построен на React и получает часовые пояса из часовой пояс момента)
common_timezones
, а неall_timezones
. - person Willem Van Onsem   schedule 10.05.2018common_timezones
в javascript? (кроме их распечатки и сохранения в файл что ли)? Кроме того, если вы напишете это как ответ, я приму - person jorgen   schedule 10.05.2018common_timezones
. - person Willem Van Onsem   schedule 10.05.2018