最 近需要和财务数据打交道,就得为数据库里存储数据选择一个好的储存方式。一开始是想使用 DecimalField 的,毕竟这是Django的原生字段。可是使用下来发现了两点问题,一是 DecimalField 在数据库中储存使用的是numeric的类型(我使用的是PostgreSQL),如果没记错的话,numeric在数据库中应该是使用的字符串来储存的,那么在使用求和之类的聚合时可能效率上会有问题;二是 DecimalField 返回的 Decimal 类型并不被CJSON或者SimpleJSON支持,需要手动转换,比较麻烦。
由于这两个问题,便萌生了自定义字段类型的想法。基本的思路是使用整型来储存,由于财务数据也就两位小数,把每个数据乘以100就能不失精度的储存。然后在获取的时候,在转换回来就可以了。看上去也不是什么复杂的工作,便立刻开始着手做了。

