首页 > 解决方案 > Django 3 OperationalError:没有这样的表'web_user'

问题描述

我想在我的 Django 应用程序中有两种类型的用户,所以我按照本教程运行

python manage.py makemigrations web
python manage.py migrate

('web' 是我的应用程序的名称)

现在我想访问admin网站的一部分,由 django at 自动添加localhost:PORT/admin。当我尝试访问该页面时,此错误显示:

django.db.utils.OperationalError: no such table: web_user

这是我的models.py

from django.contrib.auth.models import AbstractUser
from django.db import models

from web import constants


class User(AbstractUser):
    USER_TYPE_CHOICES = (
        (constants.USER_TYPE_CLEANER, 'cleaner'),
        (constants.USER_TYPE_CONTRACTOR, 'contractor'),
    )

    user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES)

    # extra fields
    email = models.CharField(max_length=100)
    phone_number = models.CharField(max_length=15)
    date_of_birth = models.DateField('date_of_birth')
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=25)
    state = models.CharField(max_length=25)

并将其设置为settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'web.apps.WebConfig',
]

# Authentication
AUTH_USER_MODEL = 'web.User'

如何启用 django 的管理站点?它对于创建演示数据非常有用。

标签: pythondjangodatabasedjango-modelsdjango-authentication

解决方案


感谢@bmons,答案是删除数据库db.sqlite3、迁移文件并创建一个新用户。请注意,额外的字段必须可以为空,否则创建超级用户将失败。


推荐阅读