Gần đây tôi đã cập nhật mô hình của mình, thêm BooleanField vào nó nhưng khi tôi làm vậy python manage.py syncdb
, nó không thêm trường mới vào cơ sở dữ liệu cho mô hình. Làm thế nào tôi có thể sửa lỗi này ?
Gần đây tôi đã cập nhật mô hình của mình, thêm BooleanField vào nó nhưng khi tôi làm vậy python manage.py syncdb
, nó không thêm trường mới vào cơ sở dữ liệu cho mô hình. Làm thế nào tôi có thể sửa lỗi này ?
Câu trả lời:
Django hiện không tự động làm điều này. Tùy chọn của bạn là:
python manage.py sql (appname)
, tìm dòng đã thêm cho trường và thêm nó theo cách thủ công bằng alter table
lệnh SQL. (Điều này cũng sẽ cho phép bạn chọn các giá trị của trường cho các bản ghi hiện tại của bạn.)Như đã đề cập trong câu trả lời đầu, tôi đã cố gắng sử dụng Nam , và sau một giờ thất vọng với lỗi di chuyển tối nghĩa quyết định đi với Django tiến hóa để thay thế.
Tôi nghĩ nó dễ bắt đầu hơn South và nó hoạt động hoàn hảo ngay lần đầu tiên tôi gõ ./manage.py evolve --hint --execute
, vì vậy tôi hài lòng với nó.
Havent đã sử dụng django trong một thời gian, nhưng tôi dường như nhớ rằng syncdb thực hiện các lệnh thay đổi trên bảng db. bạn phải thả bảng sau đó chạy lại và nó sẽ tạo lại.
chỉnh sửa: xin lỗi KHÔNG thực hiện thay đổi.
alter table
các lệnh, nó đang chạy create table
các lệnh.
Trong django 1.6
Lúc đầu, chúng tôi đã chạy - python manage.py sql <app name>
Sau đó chúng ta phải chạy - python manage.py syncdb
Nếu bạn chạy Django với Apache và MySQL, hãy khởi động lại apache sau khi thực hiện di chuyển với makemigrations .