Python 为什么可以';我不能在django中导入用户模型吗?

Python 为什么可以';我不能在django中导入用户模型吗?,python,django,django-models,django-users,Python,Django,Django Models,Django Users,我正在构建一个带有自定义用户模型的django web应用程序,该模型扩展了AbstractBaseUser。在我的一个模型中,我需要使用此自定义用户模型: from accounts.models import User class History(models.Model): user = models.ForeignKey(User) job = models.ForeignKey(Job) AUTH_USER_MODEL = "accounts.User" 当我尝试

我正在构建一个带有自定义用户模型的django web应用程序,该模型扩展了AbstractBaseUser。在我的一个模型中,我需要使用此自定义用户模型:

from accounts.models import User

class History(models.Model):
    user = models.ForeignKey(User)
    job = models.ForeignKey(Job)
AUTH_USER_MODEL = "accounts.User"
当我尝试运行
python manage.py makemigrations
命令时,会输出以下错误消息:

ImportError: cannot import name User
在my settings.py中,我执行以下操作,让django知道有一个自定义用户模型:

from accounts.models import User

class History(models.Model):
    user = models.ForeignKey(User)
    job = models.ForeignKey(Job)
AUTH_USER_MODEL = "accounts.User"
我对自己做错了什么感到困惑。肯定有一种方法可以导入我不知道的模型。我该如何解决这个问题

我尝试过使用get_user_model()方法,但是它在模型中不起作用,因为模型还没有加载。因此,这不是一个解决办法。还有其他想法吗

提前感谢您。

您可以执行以下操作:

from django.conf import settings
class History(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    job = models.ForeignKey(Job)
有关更多详细信息,请参阅

如果直接引用用户(例如,通过在外键中引用它),则代码将无法在AUTH_User_MODEL设置已更改为其他用户模型的项目中工作

获取用户模型()[源]

您应该使用django.contrib.auth.get\u User\u model()引用用户模型,而不是直接引用用户。此方法将返回当前活动的用户模型–如果指定了自定义用户模型,则返回自定义用户模型,否则返回用户模型

定义外键或与用户模型的多对多关系时,应使用AUTH_user_model设置指定自定义模型。比如说


如果在
shell
中从accounts.models import User写入
,是否会出现相同的错误?您可能有一个循环导入。按照Gagik的回答。文档说要做我所做的:
从myapp.models导入CustomUser
它说的地方是在管理界面中描述自定义用户模型的时候。请点击我在答案中给出的文档链接,看看它说了什么。我已经将导入语句更改为:
from django.contrib.auth import get_user_model
,但有一个错误是:
django.core.exceptions.AppRegistryNotReady:尚未加载模型。
@Gagik sukiasyan您是否将帐户应用程序添加到已安装的应用程序中?
INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','bootstrap3','accounts','jobs',]