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

Django models.py中Airport类触发NameError问题求助

解决Django Shell中NameError: name 'Airport' is not defined的问题

问题根源

你在Django Shell里直接调用Airport类,但没有先从对应的app中导入这个模型,Python自然找不到它。

解决方法

1. 先确认app已注册

打开项目根目录的settings.py,找到INSTALLED_APPS列表,把你的app名称(比如models.py所在的app叫flights)加进去:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'flights',  # 替换成你实际的app名称
]

2. 在Shell中正确导入模型

用python manage.py shell进入Django Shell后,执行导入命令:

# 替换flights为你的app名称
from flights.models import Airport, Flight

之后就能正常创建数据了,比如:

# 创建机场实例并保存
cdg = Airport(code="CDG", city="Paris")
cdg.save()

3. 备选导入方式(无需硬编码app名)

如果不想写死app名称,也可以用Django的apps模块动态导入:

from django.apps import apps
Airport = apps.get_model('flights', 'Airport')  # 第一个参数是app名,第二个是模型名

额外提醒

  • 修改models.py后,必须运行python manage.py makemigrations和python manage.py migrate同步数据库,不然可能出现其他异常。
  • 一定要用python manage.py shell进入Shell,普通Python Shell不会加载Django环境,肯定找不到模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:37:09