Sie können direkt den Typ eines von int String-Spalte ändern. Beachten Sie, dass, es sei denn, die strikte SQL-Modus aktiviert ist, werden ganze Zahlen auf die maximale Stringlänge und Daten abgeschnitten werden, möglicherweise verloren, so dass immer ein Backup machen und ein max_length
wählen, die hoch genug ist. Auch kann die Migration nicht leicht rückgängig gemacht werden (SQL direkt unterstützt keine String-Spalte in einem int Spalt zu ändern), so dass ein Backup ist wirklich wichtig in dieser.
Django Pre 1.7/Süd
Sie db.alter_column
verwenden können. Erstens, eine Migration erstellen, aber gelten sie noch nicht, oder Sie werden die Daten verlieren:
>>> python manage.py schemamigration my_app --auto
Dann ändern Sie die forwards
Methode in diese:
class Migration(SchemaMigration):
def forwards(self, orm):
db.alter_column('some_table', 'id', models.CharField(max_length=255))
def backwards(self, orm):
raise RuntimeError('Cannot reverse this migration.')
Dies verändert die Spalte das neue CharField
Feld anzupassen. Jetzt wenden Sie die Migration an und Sie sind fertig.
Django 1.7 können Sie verwenden, um die AlterField
Betrieb die Spalte zu ändern. Erstellen Sie zunächst eine leere Migration:
>>> python manage.py makemigrations --empty my_app
Dann fügen Sie den folgenden Vorgang:
class Migration(migrations.Migration):
operations = [
migrations.AlterField('some_model', 'id', models.CharField(max_length=255))
]
nun die Migration ausführen, und Django wird das Feld ändern, um die neuen CharField
anzupassen.