doğrudan dize int Bir sütunun türünü değiştirebilirsiniz. Kesin sql modu etkinleştirilmediyse, tamsayılar maksimum dize uzunluğuna kesilecek ve veri muhtemelen kaybedilecektir, bu yüzden her zaman bir yedekleme yapın ve yeterince yüksek bir max_length
seçin. Ayrıca, geçiş kolayca tersine çevrilemez (sql, bir dize sütunu doğrudan bir int sütununa değiştirmeyi doğrudan desteklemez), bu nedenle bir yedekleme gerçekten önemlidir. Sen db.alter_column
kullanabilirsiniz
Django 1.7/Güney
pre. İlk olarak, bir göç oluşturmak, ancak henüz geçerli olmayan veya veri kaybedersiniz: Sonra
>>> python manage.py schemamigration my_app --auto
, bu işe forwards
yöntemini değiştirmek:
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.')
Bu sütun değiştirecek yeni CharField
alanını eşleştirmek için. Şimdi geçişi uygula ve işin bitti.
Django 1.7 Bu sütunu değiştirmek için AlterField
işlemini kullanabilirsiniz. eklemek, sonra aşağıdaki işlemi
>>> python manage.py makemigrations --empty my_app
: Birincisi, boş oluşturup taşıma
class Migration(migrations.Migration):
operations = [
migrations.AlterField('some_model', 'id', models.CharField(max_length=255))
]
Şimdi göç çalıştırın ve Django yeni CharField
maç için alan değiştirecek.