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

标签 python django timezone

我的 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 - CharField 消耗的大小与您的数据库引擎有关。大多数数据库仅消耗存储文本值所需的空间。设置 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)

关于python - 如何在 Django 模型中有效存储时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47477109/

相关文章:

Python 警告 - 删除自定义警告消息末尾的原始警告输出的任何方法

python - DataFrame groupby 上的 Pandas 百分比计数

python : While True or False

django - 让我们用 uWSGI 加密

mysql - NOW() + INTERVAL 2 DAY 存储错误的日期

python - 包含字典的 sqlalchemy 映射对象

python - 带有 Django 的 Bootstrap 4 无法正确显示

python - 如何让Django看到Vue.js编译生成的dist/static下的文件?

jquery - 使用 jQuery datepicker 计算时区

c++ - 如何找到当前的系统时区?