如何让Django AutoFields以更高的数字开始

use*_*845 19 python django autofield

对于我们的Django应用程序,我们希望得到一个AutoField除了1以外的数字.似乎没有明显的方法来做到这一点.有任何想法吗?

Ada*_*mKG 18

就像其他人所说的那样,在数据库方面这比Django方面要容易得多.

对于Postgres来说,情况就是这样:ALTER SEQUENCE sequence_name RESTART WITH 12345;看看你自己的数据库引擎的文档,看看你是如何做到的.

  • 但是,这不会将您的应用程序严重耦合到特定的 DBMS 吗? (2认同)
  • 你好 2019 年年中,有更好的答案吗? (2认同)

Gab*_*ira 8

对于MySQL,我创建了一个在syncdb之后执行此操作的信号:

from django.db.models.signals import post_syncdb
from project.app import models as app_models

def auto_increment_start(sender, **kwargs):
    from django.db import connection, transaction
    cursor = connection.cursor()
    cursor = cursor.execute("""
                                ALTER table app_table AUTO_INCREMENT=2000
                            """)
    transaction.commit_unless_managed()

post_syncdb.connect(auto_increment_start, sender=app_models)
Run Code Online (Sandbox Code Playgroud)

在syncdb之后执行alter table语句.这将免除您必须登录到mysql并手动发出它.

编辑:我知道这是一个旧线程,但我认为它可能会帮助某人.