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

如何解决执行makemigrations时出现的django.db.utils.ProgrammingError错误

问题根源

错误的核心原因是在模块加载阶段执行了数据库查询:你的create_area_api/views.py里,在api_create_area类定义中直接写了print(queryset.get()),这行代码会在Django启动(包括执行makemigrations命令)时就执行,而此时accounts_project表还未通过迁移创建,导致数据库找不到对应表。

解决方案
  • 移除类定义中的直接数据库查询代码
    把print(queryset.get())从类的顶层代码中移除,放到视图的方法里(比如list、retrieve等动作方法),这样只有当实际请求到来时才会执行查询,而不是模块加载时:

    class api_create_area(viewsets.ModelViewSet):
        queryset = YourModel.objects.all()
        serializer_class = YourSerializer
    
        def list(self, request, *args, **kwargs):
            # 把查询逻辑放到方法内
            print(self.queryset.get())
            return super().list(request, *args, **kwargs)
    
  • 重新执行迁移命令
    代码修改完成后,依次执行:

    python3 manage.py makemigrations
    python3 manage.py migrate
    
  • 清理迁移文件(可选,仅当仍有问题时)
    如果修改代码后还是报错,执行以下步骤重置迁移:

    • 删除所有app下migrations目录里除__init__.py之外的所有文件
    • 清空开发环境数据库(数据不重要的前提下)
    • 重新执行makemigrations和migrate命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:46:04