2017-07-17 19 views
0

友人を求める... blank=Trueをモデルフィールドに追加すると、私のDjangoのマイグレーションがドロップされ、テーブルの列にまったく同じ制約を再追加する理由を誰でも説明できますか?ここに私のモデルの私の変更です:Djangoのマイグレーションが同じ制約を削除して再追加する

# old definition 
class CatalogCourse(models.Model): 
    subjects = models.ManyToManyField(CatalogSubject, related_name="catalog_course_set") 

# new definition with `blank=True` 
class CatalogCourse(models.Model): 
    subjects = models.ManyToManyField(CatalogSubject, related_name="catalog_course_set", blank=True) 

I makemigrationsが、私はこの移行を取得する場合:

class Migration(migrations.Migration): 

    dependencies = [ 
     ('homepage', '0005_previous_migration'), 
    ] 

    operations = [ 
     migrations.AlterField(
      model_name='catalogcourse', 
      name='subjects', 
      field=models.ManyToManyField(blank=True, related_name='catalog_course_set', to='homepage.CatalogSubject'), 
     ), 
    ] 

この移行のためのSQLが単純である:

BEGIN; 
-- 
-- Alter field subjects on catalogcourse 
-- 
ALTER TABLE "homepage_catalogcourse_subjects" DROP CONSTRAINT "homepa_catalogsubject_id_304824f4_fk_homepage_catalogsubject_id"; 
ALTER TABLE "homepage_catalogcourse_subjects" ADD CONSTRAINT "homepa_catalogsubject_id_304824f4_fk_homepage_catalogsubject_id" FOREIGN KEY ("catalogsubject_id") REFERENCES "homepage_catalogsubject" ("id") DEFERRABLE INITIALLY DEFERRED; 
ALTER TABLE "homepage_catalogcourse_subjects" DROP CONSTRAINT "homepage_catalogcourse_id_cc699e39_fk_homepage_catalogcourse_id"; 
ALTER TABLE "homepage_catalogcourse_subjects" ADD CONSTRAINT "homepage_catalogcourse_id_cc699e39_fk_homepage_catalogcourse_id" FOREIGN KEY ("catalogcourse_id") REFERENCES "homepage_catalogcourse" ("id") DEFERRABLE INITIALLY DEFERRED; 
COMMIT; 

Djangoはちょうどように構築されていますフィールドを変更するときはいつでも制約を削除して再追加しますか?なぜそれが起こる必要があるのか​​何か考えられないのですか?外部キー制約が存在する間に実行できない操作はありますか?

+0

なぜあなたは関係の両側にたくさんのフィールドを持っていますか?それはほぼ間違っています。 –

+0

私はそうではありません...私はあなたに古いものと新しいものとを示していますが、新しいものは空白=真、古いものはありません。それは同じモデルです。私は自分の変更が軽微であることを伝えようとしていただけで、モデルのデータベース定義とは関係がありません。 – ngoue

答えて

1

ticket 25253に記載されているバグが発生しているように見える場合は、

関連する問題