Я создаю систему поддержки, и мне хотелось бы иметь автоматическое обозначение заявки на основании длины идентификатора.Пример: идентификатор билета 47, поэтому я хотел бы иметь 5-целое длинное обозначение -> # 00047 или если идентификатор 2021 должен быть # 02021
мой соответствующий код: Моя модель:
class Ticket(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
designation = models.CharField(max_length=255, blank=True, null=True)
Я попытался заполнить поля циклом for в моем views.py
def Index(request):
ticket = Ticket.objects.all()
for t in ticket:
id = len(str(t.id))
if id == 1:
t.designation = "#" + str("0000") + str(t.id)
elif id == 2:
t.designation = "#" + str("000") + str(t.id)
elif id == 3:
t.designation = "#" + str("00") + str(t.id)
elif id == 4:
t.designation = "#" + str("0") + str(t.id)
else:
t.designation = "#" + str(t.id)
context = {'ticket':ticket}
return render(request, 'ticketsystem/index.html', context)
, и результат был правильным, но я хотел бы иметь заполнение при создании объекта
Я попытался сделать следующее, добавив его в свою модель Ticket:
class Ticket(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
designation = models.CharField(max_length=255, blank=True, null=True)
def save(self):
id = len(str(id))
if id == 1:
designation = "#" + str("0000") + str(id)
elif id == 2:
designation = "#" + str("000") + str(id)
elif id == 3:
designation = "#" + str("00") + str(id)
elif id == 4:
designation = "#" + str("0") + str(id)
else:
designation = "#" + str(id)
super().save()
, но возникла следующая ошибка:
локальная переменная 'id', на которую ссылается перед присваиванием