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)
Я могу вставить снова, почему?