【问题标题】:Most efficient way to store a 5 point scale in Django在 Django 中存储 5 分制的最有效方法
【发布时间】:2014-08-23 10:32:38
【问题描述】:

我有一首歌的模型如下:

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) 吗?

有什么建议吗?

【问题讨论】:

    标签: python database django django-models


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-09
      • 2014-12-13
      • 2017-08-06
      • 1970-01-01
      • 2011-05-24
      • 2011-06-22
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      相关资源
      最近更新 更多