【问题标题】:max_digits for IntegerField Django整数字段 Django 的 max_digits
【发布时间】:2018-04-19 06:23:44
【问题描述】:

我正在寻找一种方法来指定 IntegerField 以便它具有一定的最大位数。我正在寻找的类似于 CharField 的 max_length。我已经搜索了互联网,甚至在这个论坛中,但它们都是与添加最小值和最大值(例如 min_length 和 max_length)或添加验证器相关的答案。为了让他们不会感到困惑,我感兴趣的是建立一个具有最多位数而不是最大值的 IntegerField。有没有一个函数可以提供给我,以便在模型中为这个 IntegerField 添加一个参数?

例如: code = models.IntegerField('Code', primary_key=True, max_digits=8)

【问题讨论】:

标签: python django


【解决方案1】:

这就是DecimalField 的用途。

code = models.DecimalField(max_digits=8, decimal_places=0, ...)

【讨论】:

  • DecimalField 用于实数,将返回 python Decimal 类型。
【解决方案2】:

由于您使用以十进制为底,我假设以 10 为底,但您可以使用对数属性来确定。 log() 不是最准确的函数,所以你必须四舍五入才能得到正确的数字(我在高中学到的有趣技巧,如果你想四舍五入,加 0.5 并截断)。所以这将是一个返回您可以验证的位数的函数,如果它不是以 10 为底的数字,您可以指定 base=whatever

def digits(num, base=10):
    print(int(math.log(num, base) + 1.5))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 2022-11-20
    • 2017-01-07
    • 2019-03-30
    • 2010-09-21
    • 2013-09-26
    • 2017-07-04
    • 1970-01-01
    相关资源
    最近更新 更多