我需要custom_id
每个Django模式的自定义字母数字序列Product
。
def save(self, *args, **kwargs):
if self.custom_id is None:
self.custom_id = f"{custom_seq(self.id)}"
return super(Product, self).save(*args, **kwargs)
我希望将自定义字母数字序列生成为:
eg. letters=4, digits=3 then,
'AAAA001', 'AAAA002', 'AAAA003'... 'ZZZZ999'
if letters =3 and digits =4
'AAA0001', 'AAA0002'... 'ZZZ9999'
这是我的尝试:
def custom_seq(pk, letter=4, digits=3):
init = ''
alpha = string.ascii_uppercase
for i in alpha:
for j in alpha:
for k in alpha:
for l in alpha:
yield(i+j+k+l)
这只会生成“ AAAA”到“ ZZZZ”,但不确定如何在其前面添加数字并使之动态。
您可以使用itertools.product来轻松获得字母和数字的组合。
import string
import itertools
def custom_seq(pk, letter=4, digits=3):
alpha = string.ascii_uppercase
digit = string.digits
alpha_list = [alpha]*letter
digit_list = [digit]*digits
for i in itertools.product(*alpha_list):
for j in itertools.product(*digit_list):
yield "".join(i + j)
# print("".join(i + j))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句