如何在Django模型中有效存储时区



我的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)

相关内容

  • 没有找到相关文章

最新更新