ai didi

python - 为什么 "Models aren' t 已加载”?

转载 作者:太空狗 更新时间:2023-10-29 20:58:28 24 4
gpt4 key购买 nike

我正在尝试使用自定义用户安装 django-registration-redux。

我已将此包含在我的 settings.py 中:

AUTH_USER_MODEL = 'app.customUser'

注册表在目录../registration/forms.py:

from __future__ import unicode_literals


from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.forms import UserCreationForm

from .users import UserModel, UsernameField

User = UserModel()


class RegistrationForm(UserCreationForm):

required_css_class = 'required'
email = forms.EmailField(label=_("E-mail"))

class Meta:
model = customUser
fields = ('email')

此外,models.py 具有以下内容:

from __future__ import unicode_literals
from django.db import models

# Create your models here.

import datetime
import hashlib
import random
import re

from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from django.db import models
from django.template import RequestContext, TemplateDoesNotExist
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import python_2_unicode_compatible
from django.utils.timezone import now as datetime_now
from django.utils import six

from .users import UserModel, UserModelString


from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
from django.contrib.auth.admin import UserAdmin


class customUserManager(BaseUserManager):
def create_user(self, email, password=None):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError('Users must have an email address')

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

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

def create_superuser(self, email, password):
"""
Creates and saves a superuser with the given email, date of
birth and password.
"""
user = self.create_user(email,
password=password,
)
user.is_active = True
user.is_admin = True
user.save(using=self._db)
return user

class customUser(AbstractBaseUser):
email = models.EmailField(verbose_name='email address', max_length=255, unique=True)
first_name = models.CharField(max_length=50, null=True)
middle_name = models.CharField(max_length=50, null=True)
last_name = models.CharField(max_length=50, null=True)
is_active = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)

objects = customUserManager()

USERNAME_FIELD = 'email'


class customUserAdmin(UserAdmin):
# The forms to add and change user instances
#form = UserChangeForm
#add_form = RegisterationForm

class RegistrationManager(models.Manager):
"""
"""

这是回溯:

Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute
django.setup()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/Desktop/app/sites/models.py", line 21, in <module>
from .users import UserModel, UserModelString
File "/Users/Desktop/app/sites/users.py", line 4, in <module>
UserModel = get_user_model()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 150, in get_user_model
return django_apps.get_model(settings.AUTH_USER_MODEL)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 199, in get_model
self.check_models_ready()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready
raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

如果我在我的 users.py 中删除 get_user_model 中的 (),我会得到这个错误:

用户.py

from django.conf import settings
from django.contrib.auth import get_user_model

UserModel = get_user_model

def UserModelString():
try:
return settings.AUTH_USER_MODEL
except AttributeError:
return 'auth.User'


def UsernameField():
return getattr(UserModel(), 'USERNAME_FIELD', 'email')

错误:

File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 155, in get_user_model
"AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'app.customUser' that has not been installed

最佳答案

这是 get_user_model 的文档可能有帮助的功能。

Generally speaking, you should reference the User model with the AUTH_USER_MODEL setting in code that is executed at import time. get_user_model() only works once Django has imported all models.

问题在文件 ../registration/forms.py 中:

User = UserModel()

UserModel 在导入时执行,这是错误的并引发异常“模型尚未加载”。在需要的地方直接在表单方法/函数中使用 UserModel()。看几个例子here .

希望这对您有所帮助。

关于python - 为什么 "Models aren' t 已加载”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685959/

24 4 0
文章推荐: c++ - 在 Boost.Geometry rtree 中存储 OGRPoint
文章推荐: c# - 使用 MailKit (C#) 转发电子邮件
文章推荐: c# - 如何通过 CSOM 从 SharePoint 获取用户?
文章推荐: c++ - 迭代集合并集的简洁方法?
太空狗
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com