我有以下歌曲模型:
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/