python - 在 Django 中存储 5 分制的最有效方法

标签 python database django django-models

我有以下歌曲模型:

class Song(models.Model):
    name = models.CharField(max_length=255)
    artist = models.CharField(max_length=255)
    rating = models.SmallIntegerField()

我想知道是否有更好的方法来存储歌曲的评分,因为它是从 1 到 5 的等级? 更好的是,在数据库中存储相同的数据将占用更少的空间。

我已通读 Django 文档,SmallIntegerField 看起来像是最小值字段。

但它可以保存范围从“-32768 到 32767”的值,这对我的需求来说太过分了,因为我只想存储 5 个唯一值(1 到 5)。

是否有更小的字段类型?我应该使用 CharField(max_length=1) 吗?

有什么建议吗?

最佳答案

您可以缩小一个并使用 PositiveSmallIntegerField,它在所有数据库中保证存储从 0 到 32,767 的所有整数(即有符号短整数的正范围)。

存储优化的理想答案是使用类似 bit field 的东西您可以在其中以二进制形式存储分数,但是没有像内置 Django 中那样表示数值的字段类型。您必须创建自己的 Field 来存储 3 位无符号整数,并需要进行所有必要的适当开发以将其粘合到 Django 的 ORM 中。

关于python - 在 Django 中存储 5 分制的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25460981/

相关文章:

Python线程中断终端

python - Jenkins Git 插件 : git describe cannot describe anything

python - 多个条件平均python

mysql - 类(class)明智,具有最大总分的学生姓名

python - Django session 设置默认 key 用法

java - 什么是 VM,为什么动态语言需要 VM?

Android SQLite 检查表是否包含行

sql - 如何正确查询数据库以获取包含列表的结果

python - 如果找不到 Django 对象如何继续运行

python - 如何从 Pylint 中排除南移?