[PYTHON] Setzen Sie BigIntegerField auf Auto Inkrement

Ich werde es vergessen, also mach dir eine Notiz für mich. In Django gibt es AutoField, aber die von ihm erstellte Spalte der Datenbank lautet int.

Ich möchte mit bigint automatisch inkrementieren. Es gab eine freundliche Person im Stapelüberlauf.

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"])

Für diejenigen, die den Süden nicht nutzen

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)


Das scheint in Ordnung zu sein.

Experiment

Bereiten Sie zunächst ein Testmodell vor Bei der Verwendung von AutoIncrement ist zu beachten, ob es in einem anderen Feld verwendet wurde.

A model can't have more than one AutoField.

Ich werde böse.

from django.db import models
class test(models.Model):
	id = BigAutoField(primary_key=True)
python manage.py syncdb

Ergebnis

スクリーンショット 2015-09-13 16.58.14.png

Es wurde auto_increment!

Wenn Sie Ergänzungen oder Fehler haben, weisen Sie bitte darauf hin.

Referenz: http://stackoverflow.com/questions/2672975/django-biginteger-auto-increment-field-as-primary-key

Recommended Posts

Setzen Sie BigIntegerField auf Auto Inkrement
Setzen Sie VSCode auf PyCharm.