【问题标题】:Django AUTH_USER_MODEL refers to model '%s' that has not been installedDjango AUTH_USER_MODEL 引用了尚未安装的模型“%s”
【发布时间】:2020-04-27 00:48:35
【问题描述】:

我有以下型号:

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.translation import ugettext_lazy as _
from django.conf import settings

    class User(AbstractUser):

        username = models.CharField(blank=True, null=True)
        email    = models.EmailField(_('email address'), unique=True)

        USERNAME_FIELD  = 'email'
        REQUIRED_FIELDS = ['username', 'first_name', 'last_name']

        def __str__(self):
            return "{}".format(self.email)


    class UserProfile(models.Model):

        user = models.OneToOneField(settings.AUTH_USER_MODEL, 
                                    on_delete=models.CASCADE, 
                                    related_name='profile')

        dob = models.DateField()
        phone = models.CharField(max_length=15)
        active = models.BooleanField(default=True)
        receive_newsletter = models.BooleanField(default=False, blank=True)

所以我将settings.py 中的默认AUTH_USER_MODEL 改写为:

AUTH_USER_MODEL = 'myapp.User'

但在运行迁移时出现以下错误:

"AUTH_USER_MODEL 引用了尚未安装的模型 '%s'" % settings.AUTH_USER_MODEL django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL 是指模型 'kofiapi.User' 尚未被 已安装

我的项目结构如下:

  • 我的应用程序
    • API
      • 用户
        • __init__.py
        • models.py
  • 我的项目
    • settings.py

我尝试了以下变体,但都失败了:

AUTH_USER_MODEL = 'myapp.api.users.User'
AUTH_USER_MODEL = 'myapp.users.User'
AUTH_USER_MODEL = 'myapp.api.User'
AUTH_USER_MODEL = 'myapp.User'

任何迹象表明我做错了什么?

【问题讨论】:

  • 您迁移新模型了吗?
  • 在我的情况下,我的一个文件(在models.py)中有一个from django.contrib.auth import forms,从中调用了get_user_model()。通过删除这些导入解决了问题。

标签: django python-3.x django-models django-rest-framework


【解决方案1】:

更新。试试这个:AUTH_USER_MODEL = 'users.User'myapp.api.users in INSTALLED_APPS

【讨论】:

  • 不,它在INSTALLED_APPS
  • 您的用户模型所在的同一级别是否已经有__init__.py
  • AUTH_USER_MODEL 应该是 app_label.YourUserModel 格式,所以 AUTH_USER_MODEL = 'api.User' 在你的情况下。如果您已经在已安装的应用程序中将应用程序注册为myapp.api,则一切正常。
  • 我只注册了myapp 没有注册myapp.api 但我刚刚注册了,仍然得到同样的错误:(
  • 这似乎奏效了,A.Takhirov,请使用此处的 cmets 更新您的主要答案,以便我将其标记为正确。谢谢
猜你喜欢
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
相关资源
最近更新 更多