Saya baru saja memperbarui model saya, menambahkan BooleanField padanya namun ketika saya melakukannya python manage.py syncdb
, itu tidak menambahkan bidang baru ke database untuk model tersebut. Bagaimana cara memperbaikinya?
python
django
django-models
Hellnar
sumber
sumber
Jawaban:
Dari Django 1.7 dan seterusnya
Django telah membangun dukungan untuk migrasi - lihat dokumentasinya .
Untuk Django 1.6 dan sebelumnya
Django tidak mendukung migrasi di luar kotak. Ada sebuah aplikasi yang dapat dicolokkan untuk Django yang melakukan persis seperti itu, dan bekerja dengan baik. Ini disebut Selatan .
sumber
Django saat ini tidak melakukan ini secara otomatis. Pilihan Anda adalah:
python manage.py sql (appname)
, temukan baris yang ditambahkan untuk bidang dan tambahkan secara manual menggunakanalter table
perintah SQL. (Ini juga akan memungkinkan Anda untuk memilih nilai bidang untuk catatan Anda saat ini.)sumber
Ikuti langkah ini:
sumber
Seperti yang disarankan dalam jawaban teratas, saya mencoba menggunakan Selatan , dan setelah satu jam frustrasi dengan kesalahan migrasi yang tidak jelas memutuskan untuk menggunakan Django Evolution sebagai gantinya.
Saya pikir lebih mudah untuk memulai daripada Selatan, dan ini bekerja dengan sempurna saat pertama kali saya mengetik
./manage.py evolve --hint --execute
, jadi saya senang dengannya.sumber
Saya pernah menggunakan django beberapa saat, tetapi saya ingat bahwa syncdb melakukan perintah alter pada tabel db. Anda harus melepaskan tabel lalu menjalankan lagi dan itu akan membuat lagi.
edit: maaf TIDAK melakukan perubahan.
sumber
alter table
perintah, itu menjalankancreate table
perintah.Dalam django 1.6
Pada awalnya kami telah menjalankan -
python manage.py sql <app name>
Lalu kita harus lari -
python manage.py syncdb
sumber
Jika Anda menjalankan Django dengan Apache dan MySQL, restart apache setelah melakukan migrasi dengan makemigrations .
sumber