首页 > 解决方案 > Django 1.6.5 用户注册错误没有这样的表:auth_user

问题描述

我的设置.py:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
'Mysite'
)
AUTH_USER_MODEL = 'Mysite.PortalUserAbstract'

我的 Mysite.models.py:

class PortalUserAbstract(AbstractUser):
is_client = models.BooleanField(default=False)
is_manager = models.BooleanField(default=False)

错误信息 :

OperationalError at /accounts/signup/client/ 没有这样的表:auth_user 请求方法:POST 请求 URL:http: //127.0.0.1 :8000/accounts/signup/client/ Django 版本:1.6.5 异常类型:OperationalError 异常值:
没有这样的表:auth_user

当我执行 manage.py syncdb 时,它会创建表“Mysite_portaluserabstract”,但 auth 模块仍会查找 auth_user 表。

我错过了什么?

标签: djangoauthentication

解决方案


您使用的是非常过时的 Django 1.6 - 它早于迁移,它将为您创建缺少的表。如评论中所述,您应该至少升级到 Django 1.11;如果这是一个新项目,我建议在撰写本文时使用 Django 2.1,因为新的 URL 语法对入门更友好。这似乎是一个新项目,因为您刚刚开始使用自定义用户模型。

简而言之:

  • 创建一个新的虚拟环境
  • pip install django
  • django-admin startproject myproject && cd myproject
  • python manage.py startapp mysite
  • 编辑mysite/models.py并添加以下内容:

class PortalUserAbstract(AbstractUser): is_client = models.BooleanField(default=False) is_manager = models.BooleanField(default=False)

  • 编辑myproject/settings.py并添加:

AUTH_USER_MODEL = 'Mysite.PortalUserAbstract'

  • python manage.py makemigrations
  • python manage.py migrate

然后你应该使用最新版本的 Django 运行。阅读本教程可能会对您有好处:https ://docs.djangoproject.com/en/2.1/intro/tutorial01/

祝你好运!


推荐阅读