Je vais l'oublier, alors faites une note pour moi-même. Dans Django, il y a AutoField, mais la clonne de la base de données créée par celui-ci sera int.
Je veux incrémenter automatiquement avec bigint. Il y avait une personne gentille dans le débordement de pile.
from django.db.models import fields
from south.modelsinspector import add_introspection_rules
class BigAutoField(fields.AutoField):
def db_type(self, connection):
if 'mysql' in connection.__class__.__module__:
return 'bigint AUTO_INCREMENT'
return super(BigAutoField, self).db_type(connection)
add_introspection_rules([], ["^MYAPP\.fields\.BigAutoField"])
Pour ceux qui n'utilisent pas le sud
from django.db.models import fields
class BigAutoField(fields.AutoField):
def db_type(self, connection):
if 'mysql' in connection.__class__.__module__:
return 'bigint AUTO_INCREMENT'
return super(BigAutoField, self).db_type(connection)
Cela semble être bien.
Tout d'abord, préparez un modèle de test Une chose à noter lors de l'utilisation d'AutoIncrement est s'il a été utilisé dans un autre champ.
A model can't have more than one AutoField.
Je me mets en colère.
from django.db import models
class test(models.Model):
id = BigAutoField(primary_key=True)
python manage.py syncdb
C'est devenu auto_increment!
Si vous avez des suppléments ou des erreurs, veuillez les signaler.
référence: http://stackoverflow.com/questions/2672975/django-biginteger-auto-increment-field-as-primary-key