我正在关注此SO answer,因为我需要逐个生成顺序字符串。我以django形式使用它,所以我需要它增加。但是,我无法让它发挥作用。我所得到的每一次刷新都是AAAA00000。
这是代码:
from string import ascii_uppercase
def _format(value, lettercount=5, digitcount=5):
upper, lower = divmod(value, 10 ** digitcount)
letters = []
for i in range(lettercount):
upper, val = divmod(upper, 26)
letters.insert(0, ascii_uppercase[val])
return '%s%0*i' % (''.join(letters), digitcount, lower)
def lettercounter(lettercount=5, digitcount=5):
for i in range((26 ** lettercount) * (10 ** digitcount)):
yield _format(i, lettercount, digitcount)
然后在我看来:
#this is when the page loads.
addcodegenerate = codegenerate(initial={'id_gen': lettercounter()})
并且我的文本字段中显示的值为:
<generator object lettercounter at 0x038E4AA8>
每次加载页面时0x0 ...部分都会改变,所以我假设我得到一个不同的值,但这是我得到的输出。
我也在一个单独的.py文件中尝试过,我也没有得到任何输出。
每次加载页面时都应该递增..就像AAAAA00000,AAAAA00001 ....
答案 0 :(得分:0)
每次调用视图时,您都在创建一个新的生成器。您需要创建一次生成器,然后在视图中引用它。例如:
# Outside the view
incrementing_letters = letter_counter
# Inside the view
addcodegenerate = codegenerate(initial={'id_gen': incrementing_letters})