python - 无法更改列 'id' : used in a foreign key constraint of table error on Django

标签 python mysql django

我正在尝试使用 Django 创建以 MySQL 数据库为引用的模型,但是当我尝试迁移时,它会抛出以下错误:

Cannot change column 'id': used in a foreign key constraint 'fk_post' of table 'demoniosmv.images'"

我的模型是这样的:

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone

class Images(models.Model):
    #id = models.IntegerField(primary_key=True)
    fk_post = models.ForeignKey('Post', related_name="images", blank=True, null=True, on_delete = models.CASCADE)
    img_url = models.CharField(max_length=100, blank=True, null=True)

    class Meta:
        managed = True


class Post(models.Model):
    #id = models.IntegerField(primary_key=True)
    author = models.ForeignKey(User, related_name="posts", on_delete = models.CASCADE)
    title = models.CharField(max_length=200, blank=True, null=True)
    text = models.TextField(blank=True, null=True)
    created_date = models.DateTimeField(default = timezone.now)

    class Meta:
        managed = True

我用来创建数据库的 SQL 脚本是这样的:

-- MySQL Script generated by MySQL Workbench
-- Sun Jul 21 14:14:44 2019
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema demoniosmv
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema demoniosmv
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `demoniosmv` DEFAULT CHARACTER SET utf8 ;
USE `demoniosmv` ;

-- -----------------------------------------------------
-- Table `demoniosmv`.`post`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `demoniosmv`.`post` (
  `id` INT NOT NULL,
  `title` VARCHAR(200) NULL,
  `text` TEXT(1000) NULL,
  `created_date` DATETIME NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `demoniosmv`.`images`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `demoniosmv`.`images` (
  `id` INT NOT NULL,
  `fk_post` INT NULL,
  `img_url` VARCHAR(100) NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_post_idx` (`fk_post` ASC) VISIBLE,
  CONSTRAINT `fk_post`
    FOREIGN KEY (`fk_post`)
    REFERENCES `demoniosmv`.`post` (`id`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

为了创建模型,我使用了 insepctdb 命令,使用 sqlclient 进行 MySQL 连接,并使用 Django 2.2.3 和 Python 3.7。

最佳答案

我必须删除 migrations 和 py_cache 文件夹中的文件才能使其正常工作。除init.py 文件

之外的所有文件

关于python - 无法更改列 'id' : used in a foreign key constraint of table error on Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57137097/

相关文章:

python - 如何使用Python找到两个具有相同名称的文件并检查它们是否相等?

mysql - 如何将 JWT 链接到我的用户信息数据库

mysql - 如何从MYSQL获取特定列名

django - 在 Django 中注释 value() 查询

python - 为什么我不能用 ipython 访问 Django 的 shell 中的导入函数?

python - 动态过度绘制

python - 为什么我缺少 git2.h 以及如何取回它?

python - 将注释放在多行列表文字中

php - 如何从同一个表中的多个相同名称中回显单个名称

python - 如何在 Django/Google App Engine 中制作日志颜色?