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

Django自定义用户模型报错:AUTH_USER_MODEL引用模型未安装

解决Django自定义用户模型的ImproperlyConfigured错误

你遇到的这个错误根源是循环导入问题:在你的models.py文件里,你导入了UserCreationForm,而UserCreationForm内部会调用get_user_model()去获取你配置的自定义用户模型,但此时你的User模型还没完成加载,就触发了这个"模型未安装"的报错。

下面是具体的解决步骤:

1. 拆分模型和表单代码

Django的最佳实践是把模型和表单分开存放,这样能避免大部分导入冲突:

  • 在你的accounts应用目录下新建一个forms.py文件
  • 将原来models.py里的SignUpForm代码全部移到这个新文件中,调整导入语句如下:
# accounts/forms.py
from django.contrib.auth.forms import UserCreationForm
from django import forms
from .models import User

class SignUpForm(UserCreationForm):
    first_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    last_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )

2. 清理models.py文件

把models.py里和表单相关的导入及代码移除,只保留自定义用户模型的代码:

# accounts/models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class User(AbstractUser):
    # 之后你可以在这里添加需要的字段,比如friends字段:
    # friends = models.ManyToManyField('self', symmetrical=False, blank=True)
    pass

3. 验证配置并重新迁移

  • 确认你的settings.py里的AUTH_USER_MODEL = 'accounts.User'配置正确,且accounts已经在INSTALLED_APPS列表中(你已经做好这两步了)
  • 运行以下迁移命令:
python manage.py makemigrations
python manage.py migrate

额外提示

如果是中途给已有项目添加自定义用户模型,需要注意数据库迁移的兼容性问题,但从你的代码来看应该是新项目,所以不会有问题。另外,后续开发中尽量保持模型、表单、视图等代码的分离,这会让你的项目结构更清晰,也能避免很多类似的导入问题。

内容的提问来源于stack exchange,提问作者Shiv Bhatia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:03:28