有人可以帮助我创建算法。我的模型"Function"
包含字段"symbol"
。
当用户创建新的功能对象系统时,需要从英文字母的字母自动创建"symbol"
字段的值。现在我只从A到Z做了,没有重复记录字段值。
例如:
A
B
-
Z
AA
AB
-
AZ
BA
BB
-
ZZ
AAA
etc.
models.py:
class Function(models.Model):
id= models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
name = models.CharField(max_length=250)
symbol = models.TextField ()
def __str__(self):
return self.name
views.py:
if form.is_valid():
for i in string.ascii_uppercase: # (A-Z)
if not Function.objects.filter(symbol=i, project=project_code).exists():
function = form.save(commit=False)
function.symbol = i
function.save()
break
答案 0 :(得分:1)
让内置函数为您做无聊的工作。
我认为你会用itertools.product()做得更好。创建生成器并只需调用 next()每当您需要下一个组合时。如果你想从单字母字符串开始并从那里开始工作,那么将空格作为字母表的第一个元素;当你抓住一个新标签时,剥离()将空白区域移出来。