【发布时间】:2018-10-20 14:17:14
【问题描述】:
Django timezone fields 建立在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)
如果我运行(在 shell 中)
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 中,并从 moment timezone 获取时区)
【问题讨论】:
-
选项只有
common_timezones,而不是all_timezones。 -
啊哈..知道如何将
common_timezones转换为 javascript 吗? (除了打印它们并保存在文件中)?另外,如果您将其写为答案,我会接受 -
您现在如何在 JavaScript 中获取时区?该软件包支持表单字段,据我所知,它们也是
common_timezones。 -
我从时刻时区得到它们:momentjs.com/timezone
-
这个包有一个表单域的功能。所以你可以使用附加的表单域。
标签: python django timezone pytz django-timezone