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

调用Django User.history.all()报错:core_user表缺失FROM子句如何解决

错误原因

这个报错出现在使用django-simple-history跟踪自定义用户模型操作记录的场景,核心原因是历史表生成查询SQL时,尝试读取AbstractUser父类对应表core_user的字段,但生成的语句没有关联core_user表,只从历史表dib_page_historicaluser查询导致缺少表来源。

解决方案

按以下步骤排查修改即可解决:

  • 检查自定义User模型的历史记录注册逻辑,不要修改AbstractUser本身添加历史记录字段,仅在你继承AbstractUser的自定义User类中添加HistoricalRecords字段,同时开启inherit=True参数,让历史表自动包含所有父类的字段,无需关联父表查询:
from django.db import models
from django.contrib.auth.models import AbstractUser
from simple_history.models import HistoricalRecords

class User(AbstractUser):
    # 你的自定义字段
    editor_config = models.JSONField(default=dict)
    # 开启inherit参数继承父类所有字段到历史表
    history = HistoricalRecords(inherit=True)
  • 确认settings.py中AUTH_USER_MODEL配置正确,指向你自定义的User模型,格式为AUTH_USER_MODEL = "你的应用名称.User",不要使用默认的auth.User或父类User路径。
  • 如果你手动给HistoricalRecords指定了table_name参数,确认参数值没有和其他表名冲突,不需要自定义表名可删除该参数,让框架自动生成历史表名。
  • 清理已生成的错误迁移文件,重新生成迁移并执行:
    1. 删除对应应用下migrations目录中所有和历史表相关的迁移文件,保留__init__.py
    2. 执行命令python manage.py makemigrations生成新迁移
    3. 执行命令python manage.py migrate应用迁移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:01