2016-09-29 100 views
1

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

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 

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

+0

看看第二个答案在这里:http://stackoverflow.com/questions/117800/how-to-get-django-autofields-to-start-ata-a-因为您似乎在使用mysql,因此数量更高 – brianpck

回答

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.objects.create(pk=999, ...) 
     University.objects.delete() 
    except IntegrityError: 
     pass 

class MyAppConfig(AppConfig): 
    ... 

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

我们这里做的是创造了记录,并立即将其删除。在mysql上更改自动增量中的下一个值。记录已被删除并不重要。下一个签署的数字将是1000.