0
问一个朋友......任何人都可以解释为什么我的Django迁移下降,并重新添加完全相同的约束在我的表列时,我将blank=True
添加到模型字段?这是我在我的模型的变化: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)
当我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刚刚建成放下约束并在我们改变字段时重新添加它?我想不出为什么需要这样做?有外键约束存在时无法执行的操作吗?
为什么你在关系的两边都有很多领域?这几乎肯定是错误的。 –
我不......我向你展示的是新旧空白区域,其中新空白区域为真,旧区域没有。这是同一个模型。我只是想表达我的改变很小,不应该与模型的数据库定义有任何关系。 – ngoue