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

Django导入错误:无法从accounts.models导入UserProfile

解决无法导入UserProfile的问题

核心问题:代码缩进错误

你的models.py中UserProfile类的定义存在多余缩进,Python对缩进规则严格敏感,这会导致该类未被定义在模块全局作用域内,因此无法被admin.py正常导入。

修正后的models.py代码

from typing import Any
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.conf import settings

class UserProfile(models.Model):
    user = models.OneToOneField(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
    profile_picture = models.ImageField(upload_to='user/profile', blank=True, null=True)
    cover_photo = models.ImageField(upload_to='user/cover_photos', blank=True, null=True)
    address_line_1 = models.CharField(max_length=50, blank=True, null=True)
    address_line_2 = models.CharField(max_length=50, blank=True, null=True)
    country = models.CharField(max_length=15, blank=True, null=True)
    state = models.CharField(max_length=15, blank=True, null=True) 
    pin_code = models.CharField(max_length=6, blank=True, null=True) 
    latitude = models.CharField(max_length=20, blank=True, null=True) 
    longitude = models.CharField(max_length=20, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now_add=True)
    
    def __str__(self): 
        return self.user.email

额外检查项

  • 确认User模型存在:你的admin.py中导入了User,但当前提供的models.py未包含该类定义。如果使用自定义User模型,需确保它在models.py中正确继承AbstractBaseUser,同时在settings.py中配置AUTH_USER_MODEL = 'accounts.User'(假设你的应用名为accounts)。
  • 更新数据库迁移:修改模型后执行以下命令同步数据库:
python manage.py makemigrations
python manage.py migrate
  • 重启开发服务器:代码修改后重启Django服务,确保变更生效。

验证修正

完成上述操作后,重新启动项目,访问后台管理页面即可看到UserProfile已成功注册。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:25:14