【问题标题】:admin.logentry: 'user' has a relation with model <class 'api.models.User'>, which has either not been installed or is abstractadmin.logentry: 'user' 与模型 <class 'api.models.User'> 有关系,该模型要么尚未安装,要么是抽象的
【发布时间】:2013-04-20 06:21:42
【问题描述】:

django 1.5.1

我创建自定义身份验证模型:

文件 api/models.py

from django.contrib.auth.models import BaseUserManager, AbstractUser

class User(AbstractUser):

  token = models.CharField(max_length=64, null=False, blank=False, help_text=_('Photo for carte'), unique=True)
  updated_token = models.DateTimeField(auto_now_add=True, help_text=_('Create record'))

  USERNAME_FIELD = 'email'

  objects = MyUserManager()

  def __unicode__(self):
      return "пользователь: %s" % self.email
  class Meta:
      app_label = 'custom_auth'

文件设置.py

AUTH_USER_MODEL = 'custom_auth.User'
.....
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'api',
.....
'south',
'django.contrib.admin',

)

在 ./manage.py syncdb 上出现错误:

admin.logentry: 'user' has a relation with model <class 'api.models.User'>, which has either not been installed or is abstract.

如何决定这个问题?

编辑 1 尝试注释行并制作同步数据库:

'django.contrib.admin',

同步数据库成功 之后尝试在 ./manage.py shell 中创建用户

In [1]: from api.models import User
In [2]: User.objects.create_superuser('test@test.com', 'test')

并收到错误:

DatabaseError: (1146, "Table 'app_name.custom_auth_user' doesn't exist")

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    你需要在你的班级上设置一个app_label,它也在你的INSTALLED_APPS中:要么设置app_label = 'api'(默认),要么将'custom_auth'添加到你的INSTALLED_APPS中(当然,它需要成为一个有效的应用程序)。

    Django 中的验证过程尝试使用get_model 获取新的用户类,默认情况下get_model 仅返回已安装应用程序的模型。您可以使用当前代码进行验证:

    >>> loading.get_model('custom_auth', 'user')
    >>> loading.get_model('custom_auth', 'user', only_installed=False)
      > api.models.User
    

    【讨论】:

      【解决方案2】:

      您忘记将 Meta app_label 描述添加到 INSTALLED_APPS:

      # Application definition
      
      INSTALLED_APPS = (
          ...
          'custom_auth',
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 1970-01-01
        • 2022-01-25
        • 2020-08-03
        • 2014-01-29
        • 1970-01-01
        • 2015-01-10
        相关资源
        最近更新 更多