我正在寻找一种方法来指定一个IntegerField,使其具有一定的最大位数。我正在寻找的是类似于CharField的max_length。我已经在互联网上甚至在这个论坛上搜索过,但它们都是与添加最小值和最大值相关的答案,例如min_length和max_length,或者添加验证器。为了不让它们混淆,我感兴趣的是建立一个最大位数而不是最大值的IntegerField。有没有一个函数可以提供给我,以便在模型中可以将参数添加到这个IntegerField中?
例如:code = models.IntegerField('Code', primary_key=True, max_digits=8)
发布于 2017-11-07 08:20:51
这就是DecimalField的作用。
code = models.DecimalField(max_digits=8, decimal_places=0, ...)发布于 2017-11-07 08:32:42
由于您使用的是基数小数,我假设基数为10,但您可以使用对数属性来确定这一点。log()不是最精确的函数,所以你必须四舍五入才能得到正确的数字(我在高中学到的有趣的技巧,如果你想四舍五入,加0.5,然后截断)。因此,这将是一个返回可用于验证的位数的函数,如果它不是基数10,则只需指定base=whatever
def digits(num, base=10):
print(int(math.log(num, base) + 1.5))https://stackoverflow.com/questions/47147964
复制相似问题