Django как создать пользовательский идентификатор

Я пытаюсь создать пользовательский идентификатор для моего проекта, идентификатор должен содержать курс, учебный год, семестр затем возрастающее число, которое начинается с 00

Когда я размещаю что-то подобное в ex. Почтальон

{
"sem": "1",
"sy": "2022-2023",
"studentid": "2019-0478"
"course": "ENGG"
}

он создаст что-то вроде этого

ENGG2022-20231-00

но ошибка говорит django.db.utils.DataError: value too long for type character varying(20)

на данный момент это то, что у меня есть

def get_default_id():
last_CI_id = CourseItem.objects.all().order_by('CI_id').last()
if not last_CI_id:
   return str(CourseItem.office) + str(CourseItem.sy) + str(CourseItem.sem) + '00'

Даже если я удалю другие, как return str(CourseItem.office) + '00', все равно будет возвращаться та же ошибка

class CourseItem(models.Model):
CI_id = models.CharField(primary_key=True, max_length=20, default=get_default_id)
studentid = models.CharField(max_length=9, blank=True, null=True)
course = models.ForeignKey('Course', models.DO_NOTHING, blank=True, null=True)
sem = models.CharField(max_length=1, blank=True, null=True)
sy = models.CharField(max_length=9, blank=True, null=True)

Надеюсь, кто-нибудь сможет помочь, и если это не сработает, по крайней мере, может ли у меня быть какое-то альтернативное решение этой проблемы

Вернуться на верх