【问题标题】:How to start Django models auto increment key from a certain number like 2456?如何从某个数字(如 2456)启动 Django 模型自动递增键?
【发布时间】: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 不熟悉。所以谢谢你提供一个例子。

标签: django database django-models django-rest-framework django-migrations


【解决方案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"
        ),
    ]

【讨论】:

  • 谢谢..这正是我想要的。
猜你喜欢
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 2020-05-19
  • 2022-11-15
  • 2021-03-29
  • 2013-01-06
  • 2015-09-30
相关资源
最近更新 更多