คำถามติดแท็ก django-migrations

8
จะคืนค่าการย้ายข้อมูลครั้งล่าสุดได้อย่างไร
ฉันได้ทำการย้ายข้อมูลที่เพิ่มตารางใหม่และต้องการเปลี่ยนกลับและลบการย้ายข้อมูลโดยไม่ต้องสร้างการย้ายข้อมูลใหม่ ฉันต้องทำอย่างไร? มีคำสั่งให้ยกเลิกการย้ายข้อมูลครั้งล่าสุดแล้วฉันสามารถลบไฟล์การโยกย้ายได้หรือไม่

12
กลยุทธ์การย้ายข้อมูล Django สำหรับการเปลี่ยนชื่อโมเดลและฟิลด์ความสัมพันธ์
ฉันวางแผนที่จะเปลี่ยนชื่อรุ่นหลายรุ่นในโครงการ Django ที่มีอยู่ซึ่งมีโมเดลอื่น ๆ อีกมากมายที่มีความสัมพันธ์กับกุญแจต่างประเทศเป็นแบบที่ฉันต้องการเปลี่ยนชื่อ ฉันค่อนข้างแน่ใจว่าจะต้องมีการย้ายหลายครั้ง แต่ฉันไม่แน่ใจเกี่ยวกับขั้นตอนที่แน่นอน สมมติว่าฉันเริ่มด้วยโมเดลต่อไปนี้ภายในแอป Django ที่เรียกว่าmyapp: class Foo(models.Model): name = models.CharField(unique=True, max_length=32) description = models.TextField(null=True, blank=True) class AnotherModel(models.Model): foo = models.ForeignKey(Foo) is_awesome = models.BooleanField() class YetAnotherModel(models.Model): foo = models.ForeignKey(Foo) is_ridonkulous = models.BooleanField() ฉันต้องการเปลี่ยนชื่อFooรุ่นเพราะชื่อไม่สมเหตุสมผลและทำให้เกิดความสับสนในรหัสและBarจะทำให้ชื่อชัดเจนขึ้น จากสิ่งที่ฉันได้อ่านในเอกสารการพัฒนาของ Django ฉันคิดว่ากลยุทธ์การย้ายข้อมูลต่อไปนี้: ขั้นตอนที่ 1 แก้ไขmodels.py: class Bar(models.Model): # <-- changed model name …

30
Django - makemigrations - ไม่พบการเปลี่ยนแปลง
ฉันพยายามสร้างการย้ายข้อมูลภายในแอปที่มีอยู่โดยใช้คำสั่ง makemigrations แต่ผลลัพธ์ออกมาว่า "ไม่พบการเปลี่ยนแปลง" โดยปกติฉันจะสร้างแอพใหม่โดยใช้startappคำสั่ง แต่ไม่ได้ใช้กับแอพนี้ตอนที่สร้าง หลังจากแก้ไขข้อบกพร่องฉันพบว่าไม่ได้สร้างการย้ายข้อมูลเนื่องจากmigrationsแพ็กเกจ / โฟลเดอร์หายไปจากแอป จะดีกว่าไหมถ้าสร้างโฟลเดอร์ขึ้นมาถ้าไม่มีหรือฉันทำอะไรหายไป

29
Django 1.7 - makemigrations ไม่พบการเปลี่ยนแปลง
ตามที่ชื่อบอกว่าฉันไม่สามารถย้ายข้อมูลได้ แอพนี้มีอายุต่ำกว่า 1.6 ดังนั้นฉันเข้าใจว่าการย้ายข้อมูลจะไม่อยู่ที่นั่นในตอนแรกและแน่นอนถ้าฉันเรียกใช้python manage.py migrateฉันจะได้รับ: Operations to perform: Synchronize unmigrated apps: myapp Apply all migrations: admin, contenttypes, auth, sessions Synchronizing apps without migrations: Creating tables... Installing custom SQL... Installing indexes... Running migrations: No migrations to apply. ถ้าฉันทำการเปลี่ยนแปลงกับโมเดลใด ๆmyappมันก็ยังคงบอกว่าไม่มีการย้ายตามที่คาดไว้ แต่ถ้าฉันวิ่งpython manage.py makemigrations myappฉันจะได้รับ: No changes detected in app 'myapp' ดูเหมือนจะไม่สำคัญว่าฉันจะเรียกใช้คำสั่งอะไรหรืออย่างไรมันไม่เคยตรวจพบแอปว่ามีการเปลี่ยนแปลงหรือไม่เพิ่มไฟล์การย้ายข้อมูลใด …

5
Django-DB-Migrations: ไม่สามารถแก้ไขตารางได้เนื่องจากมีเหตุการณ์ทริกเกอร์ที่รอดำเนินการ
ฉันต้องการลบ null = True จาก TextField: - footer=models.TextField(null=True, blank=True) + footer=models.TextField(blank=True, default='') ฉันสร้างการย้ายสคีมา: manage.py schemamigration fooapp --auto เนื่องจากคอลัมน์ส่วนท้ายบางคอลัมน์มีNULLฉันจึงได้รับสิ่งนี้errorหากฉันเรียกใช้การย้ายข้อมูล: django.db.utils.IntegrityError: คอลัมน์ "footer" มีค่า null ฉันเพิ่มสิ่งนี้ในการย้ายสคีมา: for sender in orm['fooapp.EmailSender'].objects.filter(footer=None): sender.footer='' sender.save() ตอนนี้ฉันได้รับ: django.db.utils.DatabaseError: cannot ALTER TABLE "fooapp_emailsender" because it has pending trigger events เกิดอะไรขึ้น?

2
จะย้ายกลับจากการย้ายข้อมูลครั้งแรกใน Django 1.7 ได้อย่างไร
ฉันสร้างแอพใหม่พร้อมกับโมเดลบางรุ่นและตอนนี้ฉันสังเกตเห็นว่าบางรุ่นคิดไม่ดี เนื่องจากฉันไม่ได้ยอมรับรหัสสิ่งที่สมเหตุสมผลก็คือการย้ายฐานข้อมูลไปสู่สถานะที่ดีสุดท้ายและทำการโยกย้ายซ้ำด้วยโมเดลที่ดีกว่า ในกรณีนี้สถานะสุดท้ายที่ดีคือฐานข้อมูลที่ไม่มีแอปใหม่ ฉันจะย้ายกลับจากการย้ายข้อมูลครั้งแรกใน Django 1.7 ได้อย่างไร ในSouthหนึ่งสามารถทำได้: python manage.py migrate <app> zero ซึ่งจะล้างจากประวัติศาสตร์การโยกย้ายและการวางตารางทั้งหมด<app><app> จะทำอย่างไรกับการโยกย้าย Django 1.7

7
ปิดใช้งานการย้ายข้อมูลเมื่อรันการทดสอบหน่วยใน Django 1.7
Django 1.7แนะนำการโยกย้ายฐานข้อมูล เมื่อเรียกใช้การทดสอบหน่วยใน Django 1.7 จะบังคับให้มีการโยกย้ายซึ่งใช้เวลานาน ดังนั้นฉันต้องการข้ามการย้าย django และสร้างฐานข้อมูลในสถานะสุดท้าย ฉันรู้ว่าการเพิกเฉยต่อการย้ายข้อมูลอาจเป็นแนวทางปฏิบัติที่ไม่ดีเนื่องจากส่วนนั้นจะไม่มีการทดสอบโค้ด แต่นั่นไม่ใช่กรณี: ฉันกำลังเรียกใช้การย้ายข้อมูลทั้งหมดในเซิร์ฟเวอร์ทดสอบ CI (เจนกินส์) ฉันต้องการข้ามการย้ายข้อมูลในการทดสอบในพื้นที่เท่านั้นซึ่งความเร็วมีความสำคัญ บริบทบางส่วน: จนถึง Django 1.6เมื่อใช้ South ฉันใช้การตั้งค่าSOUTH_TESTS_MIGRATE : ตามค่าเริ่มต้นคำสั่ง syncdb ของ South จะใช้การย้ายข้อมูลด้วยหากทำงานในโหมดไม่โต้ตอบซึ่งรวมถึงเวลาที่คุณกำลังทำการทดสอบคำสั่งจะเรียกใช้การย้ายข้อมูลทุกครั้งที่คุณเรียกใช้การทดสอบ หากคุณต้องการให้นักวิ่งทดสอบใช้ syncdb แทนการโอนย้ายตัวอย่างเช่นหากการย้ายข้อมูลของคุณใช้เวลานานเกินไปในการใช้งานให้ตั้งค่า SOUTH_TESTS_MIGRATE = False ใน settings.py อย่างไรก็ตามSyncDBไม่อยู่อีกต่อไปตอนนี้ก็โยกย้าย และจาก Django 1.8ฉันจะใช้พารามิเตอร์--keepdb : ตัวเลือก --keepdb สามารถใช้เพื่อรักษาฐานข้อมูลการทดสอบระหว่างการทดสอบ สิ่งนี้มีข้อดีของการข้ามทั้งการดำเนินการสร้างและทำลายซึ่งช่วยลดเวลาในการเรียกใช้การทดสอบได้มากโดยเฉพาะอย่างยิ่งการทดสอบในชุดทดสอบขนาดใหญ่ หากไม่มีฐานข้อมูลทดสอบฐานข้อมูลจะถูกสร้างขึ้นในการรันครั้งแรกจากนั้นจะคงไว้สำหรับการรันครั้งต่อ ๆ ไป การย้ายข้อมูลที่ไม่ได้ใช้จะถูกนำไปใช้กับฐานข้อมูลทดสอบก่อนที่จะเรียกใช้ชุดทดสอบ ดังนั้นคำถามนี้ จำกัด …

11
วิธีลดความซับซ้อนในการโยกย้ายใน Django 1.7
มีคำถามที่คล้ายกันสำหรับ South อยู่แล้ว แต่ฉันได้เริ่มโครงการกับ Django 1.7 แล้วและฉันไม่ได้ใช้ South ในระหว่างการพัฒนามีการสร้างการย้ายข้อมูลจำนวนมากขึ้นอย่างไรก็ตามซอฟต์แวร์ยังไม่ได้รับการคัดลอกและไม่มีฐานข้อมูลที่ต้องย้าย ดังนั้นฉันจึงต้องการรีเซ็ตการย้ายข้อมูลราวกับว่าโมเดลปัจจุบันของฉันเป็นโมเดลดั้งเดิมและสร้างฐานข้อมูลทั้งหมดขึ้นมาใหม่ วิธีที่แนะนำคืออะไร? แก้ไข: ตั้งแต่ Django 1.8 มีคำสั่งใหม่ชื่อsquashmigrationsซึ่งช่วยแก้ปัญหาที่อธิบายไว้ที่นี่ได้มากหรือน้อย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.