IntegrityError at /admin/users/userprofile/add/ (1452, 'Cannot add or update a child row: a for

报错现象


在执行 django 后台管理的时候添加数据导致 1452 错误


报错代码



IntegrityError at /admin/users/userprofile/add/

(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))')



分析报错


因为有做 auth 的自定义扩展字段. 具体的应该是 自定义表 和 内置的 auth 表的 FK 外键无法映射导致


解决方式有两种


  建立映射


  取消映射检查


问题解决


这里采用第二种方式


直接在 settings 中设置 取消检查即可



DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "mxonline",
        "USER": "root",
        ",
        "HOST": "127.0.0.1",
        'OPTIONS': {
            "init_command": "SET foreign_key_checks = 0;",
        }
    },
}



添加 OPTIONS 属性取消外键检查即可添加成功