Django 为 AutoField 添加前缀

Django add prefix to AutoField

有没有办法在 Django 中创建总是以特定前缀开头的 AutoField

我想创建一个始终以数字 1 开头的 AutoField,其中前 15 条已保存记录的值为 11, 12, 13, 14, ..., 19, 110, 111, 112, 113, 114, 115

首先,如果主键已经被使用,则不能创建第二个 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)