django错误记录

RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

复制代码
from rest_framework import viewsets
from .models import Department, Role, User, Permission
from .serializers import DepartmentSerializer, RoleSerializer, UserSerializer, PermissionSerializer


class DepartmentViewSet(viewsets.ModelViewSet):
    queryset = Department.objects.all()
    serializer_class = DepartmentSerializer

此错误在使用视图集的时候出现

原因注释了settings.py里的

复制代码
'django.contrib.auth',
'django.contrib.contenttypes',

目前看来想使用视图集必须有这俩,但是这俩存在的话迁移数据库的时候就会出现多出一些表的问题

django.contrib.authdjango.contrib.contenttypes 是 Django REST Framework(DRF)视图集默认行为的基础依赖。它们一旦启用,迁移时就会生成一堆和用户、权限相关的表,比如:

  • auth_user

  • auth_group

  • auth_permission

  • django_content_type

🧩 为什么视图集依赖这两个?

DRF 的 ModelViewSet 默认启用了认证和权限机制,比如:

  • request.user(依赖 auth

  • IsAuthenticatedIsAdminUser 等权限类(依赖 authcontenttypes

哪怕你没用这些功能,只要没显式关闭,DRF 还是会尝试访问它们。

✅ 解决方案:保留 app,避免生成多余表

你可以保留 auth contenttypes,但通过以下方式避免它们生成表或干扰你的数据库结构:

方法一:关闭默认认证和权限机制

settings.py 中添加:

复制代码
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [],
    'DEFAULT_PERMISSION_CLASSES': [],
}

这样 DRF 就不会用到 auth_user 或权限表,虽然它们仍然存在,但不会被用到。

方法二:使用 --empty 创建迁移文件(不包含模型变更)

如果你不想让这些 app 的表出现在你的数据库里,可以:

复制代码
python manage.py migrate --exclude auth --exclude contenttypes

注意:这不是官方参数,Django 原生不支持 --exclude,但你可以用third-party migration tools 或手动控制迁移。

更常见的做法是:

复制代码
python manage.py migrate your_app_name

只迁移你自己的 app,不迁移 authcontenttypes

方法三:使用自定义用户模型(高级方案)

如果你确实需要用户系统但不想用 Django 默认的 auth_user 表,可以自定义用户模型:

复制代码
# user_permission/models.py
from django.contrib.auth.models import AbstractBaseUser

class CustomUser(AbstractBaseUser):
    # 自定义字段
    pass

然后在 settings.py 中指定:

复制代码
AUTH_USER_MODEL = 'user_permission.CustomUser'

不过这会引入更多复杂性,不建议在纯 API 项目中使用,除非你真的需要用户系统。

🧼 总结推荐方案

如果你只是想用 DRF 的视图集功能,不需要用户认证:

  1. 保留 'django.contrib.auth''django.contrib.contenttypes'

  2. 设置 DRF 不使用认证和权限类

  3. 只迁移你自己的 app,忽略系统 app 的表

这样你既能用视图集,又能保持数据库干净整洁。

相关推荐
jufeng13071 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 8 篇】
python·ai agent·配置系统
circuitsosk1 小时前
跨境电商智能化实战:AI如何赋能客服自动回复、广告智能投放与供应链预测
大数据·人工智能·python·langchain·智能客服
2601_956319882 小时前
2026年零基础学量化:从看懂示例到写清条件和动作
人工智能·python
过期的秋刀鱼!3 小时前
LangChain-D1-模型的工作流程
人工智能·python·langchain
萤火工厂目视化设计3 小时前
智能制造与企业文化目视化浪潮下:中小工厂的机遇与挑战
python·制造
DeepVisionary4 小时前
从GPT-5.6 Sol的Ultrafast模式看推理速度竞赛:750 token/秒背后,Cerebras的晶圆级生意
python·自动化
IT_陈寒4 小时前
Python的GIL让我多写了500行代码
前端·人工智能·后端
leisoo80975 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
小柯南敲键盘5 小时前
跨马翻译:跨境电商批量图片翻译与视频字幕一站式工具
人工智能·python·音视频
IT爱学堂5 小时前
精讲软件设计师(软考中级)一站式通关课_实战课程_慕课网
后端