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

执行makemigrations前遇AttributeError: django.core.serializers无ModelSerializer属性

解决 AttributeError: module 'django.core.serializers' has no attribute 'ModelSerializer' 错误

核心原因

ModelSerializer 是Django REST Framework(DRF)专属的序列化类,不属于Django原生的django.core.serializers模块。你虽已导入DRF的serializers并配置了INSTALLED_APPS,但代码大概率存在导入混淆或引用错误。

排查与解决步骤

  1. 修正Serializer导入语句
    确保从DRF正确导入serializers,而非Django原生模块:

    # 正确写法
    from rest_framework import serializers
    

    杜绝以下错误导入:

    # 错误写法(会指向Django原生序列化模块)
    from django.core import serializers
    
  2. 检查Serializer类继承关系
    确认你的序列化类继承自DRF的ModelSerializer:

    class ExampleModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = ExampleModel
            fields = '__all__'
    
  3. 排查命名冲突

    • 避免自定义文件与Django/DRF核心模块重名(比如不要把文件命名为django.py或rest_framework.py),否则会干扰正常导入逻辑。
    • 检查代码中是否存在重复导入覆盖的情况:如果先导入了DRF的serializers,后续又导入Django原生的serializers,会覆盖之前的正确引用。
  4. 验证INSTALLED_APPS配置
    确认rest_framework确实在settings.py的INSTALLED_APPS列表内:

    INSTALLED_APPS = [
        # Django默认应用
        'django.contrib.admin',
        'django.contrib.auth',
        # ...其他默认应用
        'rest_framework',
        # 你的自定义应用
        'your_app_name',
    ]
    
  5. 清理缓存并重试命令
    Python的缓存可能导致导入异常,执行以下操作后重新运行命令:

    # 清理项目中的__pycache__缓存目录
    find . -name "__pycache__" -type d -exec rm -rf {} +
    # 重新执行makemigrations
    python manage.py makemigrations
    

额外提示

若以上步骤无效,检查DRF与Django的版本兼容性——部分新版本DRF对Django版本有明确要求,版本不匹配也可能引发此类导入错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:05:19