ฉันเพิ่งอัปเดตโมเดลของฉันเพิ่ม BooleanField เข้าไปอย่างไรก็ตามเมื่อฉันทำpython manage.py syncdb
มันจะไม่เพิ่มฟิลด์ใหม่ลงในฐานข้อมูลสำหรับโมเดล ฉันจะแก้ไขปัญหานี้ได้อย่างไร?
ฉันเพิ่งอัปเดตโมเดลของฉันเพิ่ม BooleanField เข้าไปอย่างไรก็ตามเมื่อฉันทำpython manage.py syncdb
มันจะไม่เพิ่มฟิลด์ใหม่ลงในฐานข้อมูลสำหรับโมเดล ฉันจะแก้ไขปัญหานี้ได้อย่างไร?
คำตอบ:
ปัจจุบัน Django ไม่ได้ทำสิ่งนี้โดยอัตโนมัติ ตัวเลือกของคุณคือ:
python manage.py sql (appname)
ค้นหาบรรทัดที่เพิ่มสำหรับฟิลด์และเพิ่มด้วยตนเองโดยใช้alter table
คำสั่ง SQL (ซึ่งจะช่วยให้คุณสามารถเลือกค่าของฟิลด์สำหรับบันทึกปัจจุบันของคุณได้ด้วย)ตามที่แนะนำในคำตอบด้านบนฉันลองใช้Southและหลังจากผ่านไปหนึ่งชั่วโมงแห่งความไม่พอใจกับข้อผิดพลาดในการย้ายข้อมูลที่คลุมเครือตัดสินใจใช้Django Evolutionแทน
ฉันคิดว่ามันง่ายกว่าที่จะเริ่มต้นกับภาคใต้และมันก็ทำงานได้ดีในครั้งแรกที่ฉันพิมพ์./manage.py evolve --hint --execute
ดังนั้นฉันก็พอใจกับมัน
ไม่ได้ใช้ django มาระยะหนึ่งแล้ว แต่ฉันดูเหมือนจะจำได้ว่า syncdb ทำการเปลี่ยนแปลงคำสั่งบนตาราง db คุณต้องวางตารางแล้วเรียกใช้อีกครั้งและจะสร้างอีกครั้ง
แก้ไข: ขออภัยไม่ได้ทำการแก้ไข
alter table
คำสั่งมันกำลังรันcreate table
คำสั่ง
ใน django 1.6
ตอนแรกเราได้เรียกใช้ - python manage.py sql <app name>
จากนั้นเราต้องวิ่ง - python manage.py syncdb
ถ้าคุณเรียกใช้ Django กับ Apache และ MySQL, restart Apache หลังจากการย้ายถิ่นกับmakemigrations