Django create auto increment custom id

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

    {
        "office": "DORM",
        "sem": "2",
        "sy": "2021-2022",
        "remarks": "TEST",
        "resolution": "TEST",
        "studid": "2019-0069"
    }

он сохранит что-то вроде CL-DORM20212022200 (CL-officesysysem00). это мой models.py с функцией по умолчанию

def get_default_id():
last_cl_itemid = ClearanceItem.objects.all().order_by('cl_itemid').last()
if not last_cl_itemid:
    return 'CL-' + ('DORM') + ('2021-2022') + ('2') + '00'
item_id = last_cl_itemid.cl_itemid
item_int = item_id[13:17]
new_item_int = int(item_int) + 1
new_item_id = 'CL-' + ('DORM') + ('2021-2022') + ('2') + str(new_item_int).zfill(2)
return new_item_id

на данный момент он все еще жестко закодирован

class ClearanceItem(models.Model):
cl_itemid = models.CharField(primary_key=True, max_length=20, default=get_default_id)
studid = models.CharField(max_length=9, blank=True, null=True)
office = models.ForeignKey('ClearingOffice', 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)
remarks = models.TextField(blank=True, null=True)
resolution = models.TextField(blank=True, null=True)
resolve = models.BooleanField(blank=True, null=True)
resolve_date = models.DateField(blank=True, null=True)
resolve_by = models.CharField(max_length=8, blank=True, null=True)
recorded_by = models.CharField(max_length=8, blank=True, null=True)
record_date = models.DateField(default=datetime.now, blank=True, null=True)

class Meta:
    managed = False
    db_table = 'clearance_item'

Есть идеи, как я могу это сделать?

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