【问题标题】:quantize result has too many digits for current context量化结果对于当前上下文有太多数字
【发布时间】:2012-05-18 15:44:16
【问题描述】:

我正在尝试将操作结果保存在我的 admin.py 中,但出现此错误:

对于当前上下文,量化结果的位数过多

....
def save_model(self, request, obj, form, change):

    usuario_libra   = obj.consignee.membresia.libra
    valores         = Valores.objects.get(pk=1)
    vtasa           = valores.tasa
    vaduana         = valores.aduana
    vgestion        = valores.gestion
    vfee            = valores.fee
    vcombustible    = valores.combustible

    trans_aereo     = obj.peso * usuario_libra * vtasa
    aduana          = (obj.peso * vaduana )*vtasa
    fee_airpot      = (obj.peso * vfee)*vtasa
    combustible     = (obj.peso * vcombustible)*vtasa
    itbis           = (trans_aereo+vgestion)*Decimal(0.16)
    total           = trans_aereo + vgestion + aduana + fee_airpot + combustible + itbis

    if not obj.id:
        obj.total = total
        ...

这是什么意思?,我所有的模型字段都是十进制 请帮忙

谢谢

【问题讨论】:

  • this 有帮助吗?
  • @okm 我试过但没有帮助:(

标签: django django-models django-admin


【解决方案1】:

我能够通过增加“max_digits”字段选项来解决这个问题。

class Myclass(models.Model):
  my_field = models.DecimalField(max_digits=11, decimal_places=2, blank=True, null=True)

确保它足够大以容纳您希望保存的最长数字。

如果这不起作用可能还需要将精度设置为更大:

from decimal import getcontext
  ...
  getcontext().prec = 11

有关完整的上下文参数,请参阅 python 十进制文档。

【讨论】:

  • 请注意,这并不理想,因为它会随处更改上下文,这可能会破坏其他使用超过 11 位数字的代码。
  • 在它工作之后,它像以前一样减少了数字计数,它也工作了
猜你喜欢
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
相关资源
最近更新 更多