【发布时间】:2019-07-27 06:59:06
【问题描述】:
我需要创建自定义用户。我正在使用带有 AbstractUser 的用户模型:
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.html import escape, mark_safe
class User(AbstractUser):
is_student = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
settings.py:
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'crispy_forms',
'backend.classroom',
]
我认为问题出在以下行:
AUTH_USER_MODEL = 'classroom.User'
错误:
File "/home/davi/.local/share/virtualenvs/django-vue-template-Wl6a6m2J/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 82, in handle
executor = MigrationExecutor(connection, self.migration_progress_callback)
File "/home/davi/.local/share/virtualenvs/django-vue-template-Wl6a6m2J/lib/python3.6/site-packages/django/db/migrations/executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "/home/davi/.local/share/virtualenvs/django-vue-template-Wl6a6m2J/lib/python3.6/site-packages/django/db/migrations/loader.py", line 49, in __init__
self.build_graph()
File "/home/davi/.local/share/virtualenvs/django-vue-template-Wl6a6m2J/lib/python3.6/site-packages/django/db/migrations/loader.py", line 226, in build_graph
self.add_external_dependencies(key, migration)
File "/home/davi/.local/share/virtualenvs/django-vue-template-Wl6a6m2J/lib/python3.6/site-packages/django/db/migrations/loader.py", line 191, in add_external_dependencies
parent = self.check_key(parent, key[0])
File "/home/davi/.local/share/virtualenvs/django-vue-template-Wl6a6m2J/lib/python3.6/site-packages/django/db/migrations/loader.py", line 173, in check_key
raise ValueError("Dependency on app with no migrations: %s" % key[0])
ValueError: Dependency on app with no migrations: classroom
obs:app classrom 应用程序位于后端文件夹中。我也尝试了以下代码:
AUTH_USER_MODEL = 'backend.classroom.User'
【问题讨论】:
-
你是
makemigrations和migrate吗? -
是的,如果你的应用是“backend.classroom”,那么模型就是“backend.classroom.User”
-
我假设应用程序实际上是
classroom,并且有后端和前端目录,一个用于 Django 应用程序,一个用于任何前端代码。 -
您是否正在对已有用户模型的现有应用进行此更改?
-
是的,但是会显示错误并且 AUTH_USER_MODEL = 'backend.classroom.User'
标签: python django django-models