การอ้างอิงจากเอกสารการโยกย้าย Django :
ไฟล์การย้ายข้อมูลสำหรับแต่ละแอปจะอยู่ในไดเร็กทอรี "การย้ายข้อมูล" ภายในแอปนั้นและได้รับการออกแบบมาเพื่อให้ใช้งานและแจกจ่ายเป็นส่วนหนึ่งของ codebase คุณควรสร้างมันครั้งเดียวในเครื่องพัฒนาของคุณจากนั้นเรียกใช้การย้ายข้อมูลเดียวกันบนเครื่องของเพื่อนร่วมงานเครื่องจัดเตรียมของคุณและในที่สุดเครื่องจักรการผลิตของคุณ
หากคุณทำตามขั้นตอนนี้คุณไม่ควรได้รับความขัดแย้งในการรวมในไฟล์การย้ายข้อมูล
เมื่อรวมสาขาการควบคุมเวอร์ชันเข้าด้วยกันคุณอาจยังคงพบกับสถานการณ์ที่คุณมีการย้ายข้อมูลหลายรายการโดยอิงจากการย้ายข้อมูลระดับบนสุดเดียวกันเช่นในกรณีที่ผู้พัฒนารายอื่นแนะนำการโยกย้ายไปพร้อมกัน วิธีหนึ่งในการแก้ไขสถานการณ์นี้คือการแนะนำ _merge_migration_ บ่อยครั้งสิ่งนี้สามารถทำได้โดยอัตโนมัติด้วยคำสั่ง
./manage.py makemigrations --merge
ซึ่งจะแนะนำการย้ายข้อมูลใหม่ที่ขึ้นอยู่กับการย้ายหัวปัจจุบันทั้งหมด แน่นอนว่าจะใช้ได้เฉพาะเมื่อไม่มีความขัดแย้งระหว่างการย้ายข้อมูลส่วนหัวซึ่งในกรณีนี้คุณจะต้องแก้ไขปัญหาด้วยตนเอง
เนื่องจากมีบางคนในที่นี้แนะนำว่าคุณไม่ควรโอนย้ายข้อมูลไปยังการควบคุมเวอร์ชันฉันต้องการขยายเหตุผลว่าทำไมคุณจึงควรทำเช่นนั้น
ขั้นแรกคุณต้องมีบันทึกการย้ายข้อมูลที่ใช้กับระบบการผลิตของคุณ ถ้าคุณปรับใช้การเปลี่ยนแปลงในการใช้งานจริงและต้องการย้ายฐานข้อมูลคุณต้องมีคำอธิบายสถานะปัจจุบัน คุณสามารถสร้างการสำรองข้อมูลแยกต่างหากของการย้ายข้อมูลที่ใช้กับฐานข้อมูลการผลิตแต่ละรายการ แต่ดูเหมือนจะยุ่งยากโดยไม่จำเป็น
ประการที่สองการย้ายข้อมูลมักประกอบด้วยรหัสที่เขียนด้วยลายมือแบบกำหนดเอง เป็นไปไม่ได้ที่จะสร้างโดยอัตโนมัติด้วย./manage.py makemigrations
.
ประการที่สามการย้ายข้อมูลควรรวมอยู่ในการตรวจสอบโค้ด เป็นการเปลี่ยนแปลงที่สำคัญในระบบการผลิตของคุณและมีหลายสิ่งหลายอย่างที่อาจผิดพลาดได้
ดังนั้นในระยะสั้นหากคุณสนใจเกี่ยวกับข้อมูลการผลิตของคุณโปรดตรวจสอบการย้ายข้อมูลเป็นการควบคุมเวอร์ชัน
makemigrations some_app
ไม่เพียง แต่โมเดลที่อยู่ภายใต้การควบคุมของสมาชิกคนนั้นเท่านั้นที่จะได้รับผลกระทบ แต่โมเดลอื่น ๆ ที่เกี่ยวข้องก็จะได้รับผลกระทบด้วยเช่นกัน นั่นคือไฟล์การย้ายข้อมูล (00 * _ *) ในแอพอื่น ๆ จะเปลี่ยนไป และนั่นทำให้เกิดปัญหาความขัดแย้งมากมายระหว่างการผลักดันหรือดึงจาก GitHub เนื่องจากขณะนี้ระบบของเรายังไม่พร้อมสำหรับการใช้งานจริงเราจึงมีเพียง.gitignore
ไฟล์การย้ายข้อมูล เรายังไม่รู้ว่าจะแก้อย่างไรเมื่อระบบดำเนินการผลิต ใครมีวิธีแก้ไขบ้างไหม?