You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django迁移失败:ForeignKey配置错误引发SystemCheckError

Django模型迁移ForeignKey错误修复方案

你的代码里有两处错误导致了迁移报错:

  1. ForeignKey第一个参数错误:你写了Organisation(),这是实例化了一个Organisation对象,但Django外键需要传入的是模型类本身,而非实例。
  2. to_field参数使用错误:你直接写了id,这会被解析为当前Team模型的id字段,而非Organisation的id字段。而且这个参数完全可以省略——因为Django默认会关联目标模型的主键字段。

修正后的模型代码如下:

Organisation模型(无需修改)

class Organisation(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=64, choices=STATUS, default='active')
    logo_file_path = models.CharField(max_length=2048)

Team模型(修正外键部分)

class Team(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=64, choices=STATUS, default='active')
    # 修正后的外键写法,无需to_field,直接传入模型类
    org_id = models.ForeignKey(Organisation, on_delete=models.CASCADE)

如果出于某种原因你一定要显式指定to_field,正确写法是传入字符串形式的字段名:

org_id = models.ForeignKey(Organisation, to_field='id', on_delete=models.CASCADE)

修改完成后,重新执行python manage.py makemigrations和python manage.py migrate命令即可正常完成迁移。

内容的提问来源于stack exchange,提问作者Aditya Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:52:08