Django REST Framework Serializer无法导入模型触发ModuleNotFoundError
问题原因
IDE自动生成的导入路径识别的是本地文件系统的完整目录层级,但Django运行时只会将存放manage.py的项目根目录加入Python模块搜索路径,你当前使用的airquality.air_quality.models路径中多了外层的airquality层级,运行时找不到对应模块,才会触发ModuleNotFoundError报错。
解决方法
- 优先修改导入语句,删除多余的
airquality前缀:
# serializers.py 修改后的导入代码 from rest_framework import serializers from air_quality.models import Microcontrollers
- 如果你的
serializers.py直接存放在air_qualityApp的根目录下,也可以用相对导入避免路径写错:
from .models import Microcontrollers
- 如果修改后仍然报错,检查两个配置项:
- 确认
air_qualityApp已经注册到项目settings.py的INSTALLED_APPS列表中 - 确认你的项目根目录(存放
manage.py的目录)没有被命名为air_quality,和App重名导致导入冲突
可选优化
你当前的Serializer中create和update方法为空,如果没有自定义创建、更新逻辑的需求,可以直接删除这两个方法,DRF的ModelSerializer已经默认实现了基础的增改逻辑,简化后的代码如下:
from rest_framework import serializers from air_quality.models import Microcontrollers class SourceStationsSerializer(serializers.ModelSerializer): class Meta: model = Microcontrollers fields = ['name']
内容的提问来源于stack exchange,提问作者DungeonCoder
相关产品推荐
相关产品推荐

