中。这样:
TimeZones.py
import pytz
TIMEZONE_CHOICES = []
for tz in pytz.all_timezones:
TIMEZONE_CHOICES.append((tz, tz))
TIMEZONE_CHOICES = tuple(TIMEZONE_CHOICES)
from .timezones import TIMEZONE_CHOICES
class MyModel(models.Model):
timezone = models.CharField(max_length=255, default='UTC', choices=TIMEZONE_CHOICES)
老实说,这似乎有点骇人听闻。以这种方式产生时区是否会导致未来问题?这样做的理想方式是什么?
如果django允许选择接受可可,则可以简单地传递
lambda
我唯一可以看到的问题是,如果将来从
tz
数据库中时区域,那么当您尝试编辑此类记录时,选择框将是空的。 update:
django5.0及更高版本现在支持可可::
DJANGO5.0增加了支持接受映射或可调用的支持def get_scores():
return [(i, str(i)) for i in range(10)]
class Winner(models.Model):
...
score = models.IntegerField(choices=get_scores)