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

Django控制台调用User模型报NameError,修改导入方式仍无效

问题原因与解决方法

核心原因

你在Django Shell中直接调用User,但当前Shell环境未导入User类——模型文件里的User导入仅用于模型定义,不会自动同步到Shell全局环境,这和你修改模型里的导入方式无关。

解决步骤

方法1:在Shell中直接导入User

根据你模型的导入方式,对应两种Shell命令:

  • 若使用get_user_model()(Django推荐写法):
    from django.contrib.auth import get_user_model
    User = get_user_model()
    user = User.objects.get(username='admin')
    
  • 若直接导入User类:
    from django.contrib.auth.models import User
    user = User.objects.get(username='admin')
    

方法2:从自定义模型模块导入User

你已在blog.models中定义了User变量,可直接从该模块导入:

from blog.models import User
user = User.objects.get(username='admin')

额外说明

模型中推荐使用get_user_model()而非直接导入User类,这是Django最佳实践——若后续项目自定义用户模型,get_user_model()会自动适配,无需修改现有代码。你之前替换导入方式未解决问题,本质是混淆了模型文件的局部环境与Shell的全局环境,Shell中必须单独导入所需类。

内容的提问来源于stack exchange,提问作者Усман Аккаев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:58:11