概括
我正在 Django 中构建一个项目 - 并且将使用许多小范围的正十进制值(1.25
,0.01
等)。在数据库 (MySQL) 中,将它们存储为value*10^precision
. 这意味着我可以不用存储一个float
类型(4 个字节),而是使用一个SmallInt
(2 个字节)。当它是兆字节的数据时,这是 rad。
问题
问题是当 Django 和它PositiveSmallIntegerField()
制作一个自动检查“整数”值的小部件时!
选项 1:在模型代码中使用 DecimalField(),每当数据库发生变化时,我都会将 SQL 更新为 SMALLINT(3)。
PRECISION=2
class MyModule(models.Model):
...<fields>
def readySave(self):
pseudoDecimalField *= 10**PRECISION
def setValues(self):
pseudoDecimalField /= 10**PRECISION
def save(self):
# pre-save things here
self.readySave()
super(MyModule, self).save()
# post-save things here
self.setValues()
选项 2:推/拉值时使用原始 SQL 命令。
非常感谢您对此事的任何意见或经验。有没有人有任何其他方法来实现这一点?