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

问题描述 投票:0回答:2

我花了最近两天试图弄清楚如何在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

这是定义的字段:

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.任何帮助表示赞赏。

python django django-models python-3.6 postgresql-9.4
2个回答
2
投票

可以这样做吗?是。但是不要这样做。

使它成为整数。

然后增量是微不足道的 - 如果你把它作为主键,则自动增加。对于搜索,您将字符串转换为整数并搜索整数 - 这样您就不必担心实际包​​含多少前导零,因为它们都将被忽略。否则,如果您使用6位数而且用户无法记住并输入6 0 +数字然后没有匹配,则会出现问题。


1
投票

一段时间以前我做了类似的事情

你必须将你的字符串转换为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)
© www.soinside.com 2019 - 2024. All rights reserved.