Django 时区字段基于pytz timezones构建,但后者的某些时区对字段无效。像这样的模型
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 并从时刻 timezone获取时区)