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