Django custom save auto increament id

Я разместил вопрос несколько месяцев назад django create custom id def save() Я хочу создать пользовательский id с помощью автоинкремента, но когда я пытаюсь использовать его код в своем

def get_default_id():
last_id = ClearanceItem.objects.last().cl_itemid
split_id = last_id.split('-')
split_id[-1] = str(int(split_id[-1])+1)
new_id = '-'.join(split_id)
return new_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'

После того, как я вставляю данные через postman

{
"office": "OSA",
"sem": "1",
"sy": "2022-2023",
"remarks": "TEST from November 6",
"resolution": "TEST",
"studid": "2012-5037"
}

Когда я открываю таблицу clearance_item, отображается вот такая строка

|cl_itemid       |studid   |office|sem|sy       |remarks             |resolution|
|WTF2022-20223-10|2012-5037|OSA   |1  |2022-2023|TEST from November 6|TEST

Мой вопрос в том, откуда взялся этот WTF's? Он должен быть OSA2022-20232-10 основан на этом формате officesy-sem-10

Второе - когда я пытаюсь вставить те же самые данные, он говорит

(cl_itemid)=(WTF2022-20223-10) уже существует. вместо WTF2022-20223-11 но потом я меняю код с

split_id[-1] = str(int(split_id[-1])+1) to split_id[-1] = str(int(split_id[-1])+2)

Я могу вставить снова, почему?

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