如何从某个数字(如 2456)启动 Django 模型自动递增键?

Posted

技术标签:

【中文标题】如何从某个数字(如 2456)启动 Django 模型自动递增键?【英文标题】:How to start Django models auto increment key from a certain number like 2456? 【发布时间】:2021-01-20 15:59:23 【问题描述】:

mysql 中,如果你想从 2456 开始你的自增键,你可以写 AUTO_INCREMENT=2456

同样在 PostgreSQL 中,我们可以使用 Sequence 来做到这一点

CREATE SEQUENCE serial START 2456;
INSERT INTO distributors VALUES (nextval('serial'), 'nothing');

但在 Django Rest Framework 或 Django 中,默认情况下自动增量从 1 开始。如果我有这样的模型

class Content(models.Model):
     title = models.CharField(max_length=70, blank=False, default='')
     description = models.CharField(max_length=200,blank=False, default='')
     published = models.BooleanField(default=False)

如何确保第一个内容从 2456 开始?

【问题讨论】:

这能回答你的问题吗? Reset auto increment counter in postgres 没有。那是从数据库的角度来看..我需要从 Django 模型中自动递增。默认情况下,在 django 模型中,主键是一个从 1 开始的自增键。我希望该自增键从某个数字开始。 可以使用RunSQL迁移 我对 RunSQL 不熟悉。所以谢谢你提供一个例子。 【参考方案1】:

创建RunSQL--(Django Doc) 操作

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ('sample', '0003_content'),
    ]

    operations = [
        migrations.RunSQL(
            "ALTER SEQUENCE sample_content_id_seq RESTART WITH 1453"
        ),
    ]

【讨论】:

谢谢..这正是我想要的。

以上是关于如何从某个数字(如 2456)启动 Django 模型自动递增键?的主要内容,如果未能解决你的问题,请参考以下文章

2456: mode

bzoj2456 mode

BZOJ 2456 杂题 卡内存

BZOJ-2456: mode (神题)

BZOJ 2456 mode

bzoj2456: mode