Поля часового пояса Джанго построены на точках времени 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 и получает часовые пояса из момента времени )