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
相关产品推荐
相关产品推荐

