如何在从10000开始的django中创建自动增量字段

时间:2016-09-29 19:34:50

标签: python mysql django django-models

我想在Django中创建一个自动增量字段,从较大的值开始,我发现在模型中使用 Autofield ,但它从1开始。

class University(models.Model):
    id = models.AutoField(primary_key=True)
    university_name = models.CharField(max_length=250, unique=True)
    university_slug = models.SlugField(max_length=250, unique=True)

    def __unicode__(self):
        return self.university_name

怎么办呢?任何有用的建议将不胜感激?

2 个答案:

答案 0 :(得分:1)

最简单的方法是抓住post migrate signal

from django.apps import AppConfig
from django.db.models.signals import post_migrate

def my_callback(sender, **kwargs):
     if sender.name = 'myapp'
     try:
         university = University.objects.create(pk=999, ...)
         university.delete()
     except IntegrityError:
         pass

class MyAppConfig(AppConfig):
    ...

    def ready(self):
        post_migrate.connect(my_callback, sender=self)

我们在这里做的是创建一个记录并立即删除它。在mysql上更改自动增量中的下一个值。记录被删除并不重要。下一个签名号码为1000.

答案 1 :(得分:0)

而不是在前端尝试,我建议你在后端(在数据库中)创建序列,并启动更高的数字序列值。

希望这能解决你的目的。