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?
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?
Jawaban:
Django telah membangun dukungan untuk migrasi - lihat dokumentasinya .
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 .
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 menggunakan alter table
perintah SQL. (Ini juga akan memungkinkan Anda untuk memilih nilai bidang untuk catatan Anda saat ini.)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.
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.
alter table
perintah, itu menjalankan create 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
Jika Anda menjalankan Django dengan Apache dan MySQL, restart apache setelah melakukan migrasi dengan makemigrations .