微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在Django中链接表时不兼容的外键?

如何解决尝试在Django中链接表时不兼容的外键?

我正在尝试创建几个基本模型,并使用外键将它们链接在一起。

一个工具

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的详细名称,而冗长的名称仅用于人类,因此与数据库无关。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。