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

Django执行migrate命令报错 按教程编写models.py代码仍无法运行

问题原因

你使用的Django为2.0及以上版本,而参考教程使用的是Django 1.x版本,二者存在语法不兼容:Django 2.0开始ForeignKey外键字段必须显式指定on_delete参数,你当前的models代码缺失该参数,是报错的核心原因,你贴出的报错是截断内容,完整报错末尾会明确提示该参数缺失。

解决方案

1. 修改models.py的外键字段

找到Webpage和AccessRecord类里的外键定义,补充on_delete参数:

from django.db import models

class Topic(models.Model):
    top_name = models.CharField(max_length=264,unique=True)

    def __str__(self):
        return self.top_name

class Webpage(models.Model):
    # 补充on_delete参数
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    name = models.CharField(max_length=264,unique=True)
    url = models.URLField(unique=True)

    def __str__(self):
        return self.name

class AccessRecord(models.Model):
    # 补充on_delete参数
    name = models.ForeignKey(Webpage, on_delete=models.CASCADE)
    date = models.DateField()

    def __str__(self):
        return str(self.date)

on_delete=models.CASCADE是入门场景最常用的级联规则,含义是当关联的主表数据被删除时,对应从表数据也会同步删除。

2. 重新执行迁移命令

先执行生成迁移文件的命令:
python manage.py makemigrations
命令无报错后,再执行迁移生效命令:
python manage.py migrate

补充说明

你的admin.py不需要修改,教程的操作仅适配老版本Django,本次报错和admin配置无关。

内容的提问来源于stack exchange,提问作者Abdul Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 04:36:03