概要
私はDjangoでプロジェクトを構築しています-そして、多くの小さな範囲の正の10進値(、、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 コマンドを使用します。
この問題に関する意見や経験は大歓迎です。これを実現する他の方法はありますか?