ฉันเพิ่งอัปเดตโมเดลของฉันเพิ่ม 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