Int vs String用于字段选择

时间:2016-11-17 08:27:20

标签: python django

如果我有一个可以有很多类型的django模型(假设它们很少会改变,但可能会添加新的类型),那么用int做它会更好吗?

from enum import Enum
class Places(Enum):
    gym = 0
    coffee_shop = 1
    home = 2
    garage = 3
    office = 4
    study = 5
    shed = 6

或者作为字符串更好吗?

GYM = 'gym'
COFFEE_SHOP = 'coffee_shop'
HOME = 'home'
GARAGE = 'garage'
OFFICE = 'office'
STUDY = 'study'
SHED = 'shed'

我喜欢字符串,因为它们是人类可读的(并且文档似乎使用FR,JR,SR等字符串),但我经常看到人们使用整数来执行此操作。

有人可以解释原因吗?

2 个答案:

答案 0 :(得分:1)

  

我经常看到人们使用整数来做这件事。   有人能解释一下原因吗?

人们使用小整数(SmallIntegerField)因为它们在从数据库中检索值方面比字符串快得多。与在字符串中查找整数比在字符串中查找更快的方式相同。

然而,如果您使用Django Rest Framework,您的消费者必须了解每个数字在处理数据时实际代表的含义。当然也有解决这个问题的方法。

答案 1 :(得分:1)

为什么不两者?

Ints in the guts,所以如果你在多个地方拥有相同的数据,你可以存储更小的int,而不是多次存储字符串。人类面临的任何事物都可以从int转换回字符串。

内存占用空间更小,几乎达不到性能。

将Enum扩展为为您执行这些转换然后从该类继承的类将是一种非常好的方法。