我的django模型中有一个时区字段:
import pytz
ALL_TIMEZONES = sorted((item, item) for item in pytz.all_timezones)
...
class Snippet(models.Model):
tz = models.CharField(choices=ALL_TIMEZONES,max_length=32)
我有点担心TZ领域所占据的空间,因为我希望将来有很多片段。最长的时区为32个字符,但只有593个时区,因此2个字节足以存储时区。
是否有更好的方法来存储/定义我的TZ字段?当然,我可以使用自己的编码方案,但是在我要确保没有其他解决方案之前。
1-我认为这是一个不错的选择存储,作为" America/sao_paulo"。我认为时区没有数字ID。
2-查菲尔德消耗的大小与您的数据库引擎有关。大多数数据库仅消耗存储文本值所需的空间。在设置32或320个字符的空间方面没有区别(我认为64个尺寸很好)。
3-使用第三个正常形式:创建一个时区表,然后使用FKS链接它:
class MytimezoneTable(models.Model):
tz_name = models.CharField(choices=ALL_TIMEZONES, max_length=64)
class Snippet(models.Model):
tz = models.ForeignKey(MyTimezoneTable)