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

Django导入失败报错:跨App导入自定义User模型问题求助

解决Django导入CustomUser时的ImportError问题

针对你遇到的ImportError: Couldn't import Django错误,这通常不是Django未安装的问题,而是导入时机或环境配置的问题,以下是具体解决步骤:

1. 使用Django推荐的模型引用方式

在core/models.py中,不要直接导入CustomUser,改用字符串引用或settings.AUTH_USER_MODEL来避免初始化阶段的导入冲突:

from django.db import models
from django.conf import settings

class UserPreference(models.Model):
    # 方式1:使用settings中的AUTH_USER_MODEL
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='preferences'
    )
    # 方式2:直接用字符串路径
    # user = models.OneToOneField(
    #     'accounts.CustomUser',
    #     on_delete=models.CASCADE,
    #     related_name='preferences'
    # )
    # 其他字段定义

2. 确认虚拟环境已激活

如果使用了虚拟环境,先确保环境处于激活状态:

  • Linux/macOS:source venv/bin/activate
  • Windows:venv\Scripts\activate
    激活后再执行Django命令(如python manage.py makemigrations)。

3. 调整INSTALLED_APPS的顺序

将accounts放在core之前添加到INSTALLED_APPS,确保Django先加载accounts的模型:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts',  # 先加载accounts
    'core',
]

4. 配置AUTH_USER_MODEL

在项目的settings.py中明确指定自定义用户模型,这是使用自定义用户的必要步骤:

AUTH_USER_MODEL = 'accounts.CustomUser'

5. 不要直接运行models.py文件

禁止直接执行python core/models.py,这种方式会跳过Django的初始化流程,导致无法找到Django模块。所有测试或操作都要通过manage.py执行,比如:

python manage.py shell
# 在shell中测试导入
from core.models import UserPreference
from accounts.models import CustomUser

内容的提问来源于stack exchange,提问作者Muhammad Ullah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:27:11