Int 与 String 的字段选择

aro*_*ooo 3 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
Run Code Online (Sandbox Code Playgroud)

或者将其作为字符串更好?

GYM = 'gym'
COFFEE_SHOP = 'coffee_shop'
HOME = 'home'
GARAGE = 'garage'
OFFICE = 'office'
STUDY = 'study'
SHED = 'shed'
Run Code Online (Sandbox Code Playgroud)

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

有人可以解释为什么吗?

Say*_*yse 6

我经常看到人们使用整数来做到这一点。有人可以解释为什么吗?

人们使用小整数 ( SmallIntegerField) 是因为从数据库中检索值时,它们的查找速度比字符串快得多。就像在列表中查找整数比在字符串中查找整数更快一样。

但是,如果您要使用 Django Rest Framework,那么您的消费者在处理数据时必须了解每个数字实际代表什么,这是一个权衡。当然也有办法解决这个问题。