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

未创建自定义Model时Django迁移命令makemigrations和migrate生效原因问询

核心原因

Django 创建项目后生成的默认配置里,settings.py 的 INSTALLED_APPS 列表已经预先注册了多个官方内置应用,其中就包含负责身份认证的 django.contrib.auth 应用:

  • 该内置应用本身已经封装了完整的 User 模型、权限模型等数据结构,以及对应的迁移文件,不需要你自行定义相关Model
  • 你使用的 UserCreationForm 是官方和内置 User 模型绑定的表单类,调用表单的 save() 方法时,本质是往内置 User 模型对应的数据库表写入数据
  • 执行 makemigrations 时会扫描所有已注册应用(包括所有内置预装应用)的模型变更,migrate 会把所有应用的迁移规则同步到数据库生成对应表,因此哪怕你没有编写自定义Model,执行迁移命令也会自动生成auth相关的表,支撑用户数据的存储。

涉及的代码参考

你编写的视图代码如下:

from django.shortcuts import render
from django.contrib.auth.forms import UserCreationForm

# Create your views here.

def homepage(request):
    return render(request,'homepage.html')

def register(request):
    if request.method == 'POST':

        fm = UserCreationForm(request.POST)
        if fm.is_valid():
            fm.save()
    fm = UserCreationForm()     
    return render(request,'register.html',{'form':fm})

def login(request):
    return render(request,'login.html')

你执行的迁移命令如下:

py manage.py makemigrations
py manage.py migrate
py manage.py createsuperuser

内容的提问来源于stack exchange,提问作者amar gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:09:03