如何在Python中增加数字字符串

Ste*_*ith 3 python django django-models postgresql-9.4 python-3.6

过去两天我一直在尝试弄清楚如何在 Python 中递增数字字符串。我试图在创建记录时增加序列号。我昨天花了一整天的时间尝试将其作为整数来执行,它工作正常,但我永远无法让数据库存储前导零。我在 StackOverflow 中对这个主题进行了广泛的研究,虽然有几个示例说明如何将其作为整数并存储前导零,但这些示例都不适合我。许多例子都是 2014 年的,所以方法可能已经改变了。然后,我切换到 String 并将属性更改为 CharField,并且可以让该函数使用前导零,但现在我似乎无法让它递增。再说一次,我在 SO 上找到的例子是 2014 年的,所以也许事情已经发生了一些变化。这是有效的函数,但每次我调用它时,它都不会增加。它只是返回 00000001。我确信这是我没有做的简单事情,但我没有主意。在此先感谢您的帮助。这是可以工作但不增加的函数。

def getNextSeqNo(self):
    x = str(int(self.request_number) + 1)
    self.request_number = str(x).zfill(8)
    return self.request_number
Run Code Online (Sandbox Code Playgroud)

这是该字段的定义:

request_number = models.CharField(editable=True,null=True,max_length=254,default="00000")
Run Code Online (Sandbox Code Playgroud)

我添加了默认值“00000”,因为如果不存在,系统会给出以下错误:

int() argument must be a string, a bytes-like object or a number, not 'NoneType'
Run Code Online (Sandbox Code Playgroud)

我意识到我的代码基本上是将我的默认值增加 1,这就是为什么我总是得到 00000001 作为我的序列号。似乎无法弄清楚如何获取当前数字然后加 1。任何帮助都会受到赞赏。

小智 5

前一次我做了类似的东西

您必须将字符串转换为 int,然后必须获取其长度,然后必须计算所需的零数量

code = "00000" 
code = str(int(code) + 1 )
code_length = len(code)

if code_length < 5: # number five is the max length of your code
  code = "0" * (5 - code_length) + code

print(code)
Run Code Online (Sandbox Code Playgroud)