问题描述
我正在尝试创建几个基本模型,并使用外键将它们链接在一起。
第一个工具
class tool1(models.Model):
tool_id = models.CharField(
max_length=100,primary_key=True,verbose_name="Tool",)
description = models.CharField(
default="",max_length=100,verbose_name="Description",help_text="Describe tool here",)
我首先将其迁移到数据库。一切正常,Django成功在数据库中创建了新表。然后,我尝试通过外键进行引用。
参考工具
class Tool2(models.Model):
tool1 = models.ForeignKey(
Tool,default=None,on_delete=models.PROTECT
blank=True
)
出于某种原因,我引用的其他工具也可以使用,但是该工具无法使用。我收到以下错误:
django.db.utils.OperationalError: (3780,"Referencing column 'tool1' and referenced column 'tool_id' in foreign key constraint [FK Name] are incompatible.")
由于引用工具成功引用了其他多个工具,所以我无法弄清楚为什么会发生这种情况,但是它不会链接到该工具。此错误的原因是什么?以及如何解决它以便链接表?为什么它们不兼容?
解决方法
尝试从tool_id中删除主键约束。 models.Model
具有您继承的主键字段。
编辑: 设置外键时不要使用冗长的名称。在tool2中设置外键时,请使用tool1代替tool。 tool是tool1的详细名称,而冗长的名称仅用于人类,因此与数据库无关。