我更改了模型的一个字段,以创建迁移并将其应用。没有错误。但是当我尝试运行测试时,出现了错误。
django.db.utils.OperationalError: (1833, "Cannot change column 'rfiid': used in a foreign key constraint 'elements_attachments_rfi_id_bc723558_fk_rfis_rfiid' of table 'test_smap_production.elements_attachments'")
我更改的字段- rfiid 。我将其从 AutoField 切换为 CharField 。
models.py
class Rfis(models.Model):
rfiid = models.CharField(max_length=6, primary_key=True)
....
迁移成功,并且数据库中没有已创建的模型实例。为什么会发生这种错误,以及如何纠正?
ps.s。
class ElementsAttachments(models.Model):
e = models.ForeignKey('Elements', models.DO_NOTHING)
attachment = models.ForeignKey('Attachments', models.DO_NOTHING)
rfi = models.ForeignKey('Rfis', models.DO_NOTHING)
timestamp = models.DateTimeField(auto_now=True)
active = models.IntegerField()
vendor_response = models.IntegerField(blank=True, null=True)
答案 0 :(得分:0)
一种不干净且冒险的方法是删除所有以前的迁移并进行新的迁移。
警告:这是有风险的,如果数据库中已经有数据,则可能造成损害。