【发布时间】:2016-11-30 12:50:35
【问题描述】:
我有一个包含 9 个表的 MySQL 数据库。它们都以某种方式相关,但我无法与外键连接。例如,这是我的两个表,当我尝试 python manage.py migrate 时出现错误:
class Release(models.Model):
release_ID = models.CharField(max_length=25, primary_key =True)
releaseversion = models.CharField(max_length=25)
model_ID = models.ForeignKey(Model, on_delete=models.CASCADE) #comes from Model class
class Subrelease(models.Model):
subrelease_ID = models.CharField(max_length=25)
release_ID = models.ForeignKey('Release', blank =True) #comes from Release class
subreleaseversion = models.CharField(max_length=25)
如何使 Release 类中的主键,即 release_ID 也是 Subrelease 类中的 ForeignKey release_ID?任何帮助将非常感激。谢谢你。
运行迁移后,我在 cmd 中得到了这个:
django.db.utils.InternalError: (1829, "Cannot drop column 'id': needed in a foreign
key constraint 'app_subrel_release_ID_id_8e08450_fk_app_release_id' of table
'db.app_subrelease'")
更新: 这很好/可以吗?迁移到数据库时没有任何错误?
class Release(models.Model):
#release_ID = models.CharField(max_length=25, primary_key =True)THIS WILL BE OUR PRIMARY KEY MADE BY DJANGO
releaseversion = models.CharField(max_length=25)
model = models.ForeignKey(Model, on_delete=models.CASCADE) #comes from Model class model_ID
class Subrelease(models.Model):
#subrelease_ID = models.CharField(max_length=25) THIS WILL BE OUR PRIMARY KEY MADE BY DJANGO
release = models.ForeignKey(Release, on_delete=models.CASCADE ) #comes from Release class release_ID
subreleaseversion = models.CharField(max_length=25)
【问题讨论】:
-
“一个错误”?分享就是关怀。
-
你能正确地格式化你的缩进吗?什么错误?追溯?另外,我认为您不希望 blank=True 作为外键
-
哎呀,对不起,我忘了发布错误。谢谢你让我知道。我更新了我的问题。