迁移时出错,Django中找不到模块错误



我试图创建一个自定义的用户模型,所以我扩展了AbstractBaseUser和BaseUserManager来进行模型管理。

当我尝试迁移或运行服务器时,出现的错误是:

Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 110, in inner_run
autoreload.raise_last_exception()
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/utils/autoreload.py", line 76, in raise_last_exception
raise _exception[1]
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 357, in execute
autoreload.check_errors(django.setup)()
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'django.contrib.messagesdjango'

我的自定义用户模型是:

class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=100, unique=True)
name = models.CharField(verbose_name="full name", max_length=100)
username = models.CharField(max_length=30, unique=True)
date_joined = models.DateTimeField(verbose_name="date joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="last login", auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)

USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["username", "name"]

objects = MyAccountManager()

def __str__(self):
return self.email

def has_perm(self, perm, obj=None):
return self.is_admin

def has_module_perms(self, app_label):
return True

模型管理器是:

class MyAccountManager(BaseUserManager):
def create_user(self, email, username, name, password=None):
if not email:
raise ValueError("Users must have an email address")
if not username:
raise ValueError("Users must have a username")

user = self.model(
email=self.normalize_email(email),
username=self.username,
name=self.name
)

user.set_password(password)
user.save(using=self._db)
return user

def create_superuser(self, email, username, name):
if not email:
raise ValueError("Users must have an email address")
if not username:
raise ValueError("Users must have a username")

user = self.create_user(
email=self.normalize_email(email),
username=self.username,
name=self.name,
password=password
)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user

我认为错误可能是因为Python 3.8和Django 3.1不兼容,我已经在我的venv:中安装了它们

点子列表:

Package             Version
------------------- -------
asgiref             3.2.10
Django              3.1.1
djangorestframework 3.11.1
pip                 20.2.3
psycopg2            2.8.6
pytz                2020.1
setuptools          50.3.0
sqlparse            0.3.1

您的INSTALLED_APPS看起来怎么样?您可能在django.contrib.messages后面缺少一个逗号,或者您不小心复制粘贴了一些东西。

最新更新