我有一首歌的以下模型:
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)吗?
有什么建议吗?
答案 0 :(得分:2)
您可以使用较小的PositiveSmallIntegerField
,这在所有数据库中都可以保证存储0到32,767之间的所有整数(即有符号短的正范围)。
存储优化的理想答案是使用类似bit field的内容,您可以在其中存储二进制分数,但内置Django中没有类似数值的字段类型。你必须创建自己的Field来存储一个3位无符号整数,需要进行所有适当的开发才能将它粘合到Django的ORM中。