【发布时间】:2015-05-01 20:24:30
【问题描述】:
我正在创建一个自定义 django 用户,但在尝试使用它时出现以下错误。我得到的错误如下
AppRegistryNotReady: Models aren't loaded yet.
我的模型
class MyCustomUserManager(BaseUserManager):
def create_user(self, username, email, password=None, **kwargs):
if not username:
raise ValueError("Username must be defined for users")
if not kwargs.get('email'):
raise ValueError("Users must have a valid email")
user = self.model(username=username, email=self.normalize_email(email), **kwargs)
user.set_password(password)
user.save()
return user
def create_superuser(self, username, email, password, **kwargs):
user = self.create_user(username, email, password, **kwargs)
user.is_admin = True
user.save()
class MyCustomUser(AbstractBaseUser):
username = models.CharField(max_length=40, unique=True)
email = models.EmailField(max_length=255, unique=True, verbose_name=_('Email Address'))
date_of_birth = models.DateField(auto_now=False, blank=False, null=False, verbose_name=_("Ημ. Γεννήσεως"))
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
first_name = models.CharField(max_length=40, blank=False, null=False, verbose_name=_("Όνομα"))
last_name = models.CharField(max_length=40, blank=False, null=False, verbose_name=_("Επίθετο"))
friends = models.ManyToManyField('self', related_name="friends")
objects = MyCustomUserManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email',]
def get_full_name(self):
return "%s %s" % (self.first_name, self.last_name)
def __unicode__(self):
return self.get_full_name()
class Meta:
verbose_name = _('Χρήστης')
verbose_name_plural = _('Χρήστες')
我还设置了设置文件以包含我的新自定义用户模型。
(在 settings.py 中)
AUTH_USER_MODEL = 'myapp.MyCustomUserModel'
当登录 shell 时尝试像这样使用我的新用户类型
from django.contrib.auth import get_user_model
user = get_user_model().objects.all()
我得到了上面的错误。 Django 1.7 有什么问题吗
P.S:我使用 makemigrations 和 migrate 来制作模型,我在 virtualenv 后面。
【问题讨论】:
-
如何启动shell?通过manage.py?
-
@Apostolos 你做了吗,
import django和django.setup()? -
文档说:另一个常见的罪魁祸首是 django.contrib.auth.get_user_model()。使用 AUTH_USER_MODEL 设置在导入时引用用户模型。
-
请检查this中的这些答案是否对您有帮助。
-
我应该在哪里导入 django.setup。我正在运行 django shell,它会自动导入所有这些
标签: python django django-custom-user