我花了最近两天的时间尝试在Python中如何递增数字字符串。我正在尝试在创建记录时递增序列号。我昨天整天都试图将其作为整数来完成,虽然它可以正常工作,但我无法让数据库存储前导零。我在StackOverflow上对这个主题进行了广泛的研究,虽然有几个例子说明如何将其作为整数并存储前导零,但是没有一个例子适用于我。许多例子都来自2014年,所以方法可能已经改变了。然后我切换到字符串并将属性更改为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
这里是字段的定义:
request_number = models.CharField(editable=True,null=True,max_length=254,default="00000")
由于系统提示缺少此项,我将默认添加“00000”:
int() argument must be a string, a bytes-like object or a number, not 'NoneType'
我意识到我的代码基本上是将我的默认值增加1,这就是为什么我总是得到00000001作为我的序列号。似乎无法弄清楚如何获取当前数字,然后再加1。任何帮助都将不胜感激。
CharField
?为什么不用Integer
? - John Gordonself.request_number
已经设置了吗?如果它给你默认值,那么可能没有被设置。 - Liam