【问题标题】:django - DecimalField max_digits, decimal_places explaineddjango - DecimalField max_digits,decimal_places 解释
【发布时间】:2021-04-28 20:22:25
【问题描述】:

所以我刚开始使用 Django 并使用它来存储表示为 1.21242、1.20641 等的外汇价格...

model.py

from django.db import models

# Create your models here.
class ForexPrice(models.Model):
    openPrice = models.DecimalField(max_digits=6, decimal_places=6)
    highPrice = models.DecimalField(max_digits=6, decimal_places=6)
    lowPrice = models.DecimalField(max_digits=6, decimal_places=6)
    closePrice = models.DecimalField(max_digits=6, decimal_places=6)

我的问题是:
max_decimal 和 decimal_places 属性如何工作?我在这两个字段中都使用了 6,假设 max_digits=6 将允许值最多存储 6 位数字,即:123456.000000 而decimal_palces=6 将支持高达 000000.123456 的值。

这个假设是正确的还是我遗漏了什么?

将记录保存到数据库时出现以下错误:

精度为 6、标度为 6 的字段必须舍入为小于绝对值 大于 1。

【问题讨论】:

标签: python django django-models


【解决方案1】:

max_digits 必须等于或大于decimal_places。

如果您有 123456.654321,则必须定义 max_digits=12、decimal_places=6。

max_digits 包括 decimal_places。

【讨论】:

  • 啊……我明白了。这实际上现在更有意义了。所以如果我想支持像 9.123456 这样的东西,我会使用 max_digits=7, decimal_places=6?对吗?
猜你喜欢
  • 2017-07-04
  • 2016-10-23
  • 2018-04-16
  • 2015-09-06
  • 1970-01-01
  • 2018-04-19
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多