Django добавить префикс в AutoField - PullRequest
0 голосов
/ 04 июля 2018

Есть ли способ создать AutoField в Django, который всегда начинается с определенного префикса?

Я хотел бы создать AutoField, который всегда начинается с цифры 1, где первые 15 сохраненных записей будут иметь значения 11, 12, 13, 14, ..., 19, 110, 111, 112, 113, 114, 115.

1 Ответ

0 голосов
/ 04 июля 2018

Прежде всего, вы не можете создать вторую AutoField, если она уже используется для первичного ключа, потому что некоторые бэкэнды базы данных (такие как MySQL) не поддерживают ее. Смотри https://code.djangoproject.com/ticket/8576

Во-вторых, нет, вы не можете этого сделать, но вы можете переопределить save метод для заполнения второго столбца, который объединит 1 с вашим автоматически сгенерированным id, то есть:

class MyModel(models.Model):
    ...
    custom_id = models.IntegerField()

    def save(self, *args, **kwargs):
        if self.custom_id is None:
            self.custom_id = int('1' + str(self.id))
        return super(MyModel, self).save(*args, **kwargs)
...