创建新用户时遇OperationalError:不存在class_profile表,求解决
解决Django注册时出现OperationalError: no such table: class_profile的问题
问题详情
创建新用户时触发错误:OperationalError at /register no such table: class_profile,项目settings.py中未配置AUTH_USER_MODEL = 'class.User'。
我的models.py代码
from pyexpat import model from django.contrib.auth.models import User from django.core.checks.messages import CheckMessage from django.db import models class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) institution = models.CharField(max_length = 100) bio = models.TextField(max_length=300) def __str__(self): return f'{self.user.username} Profile'
我的views.py代码
def register(request): if request.method == 'POST': form = UserRegisterForm(request.POST) profile_form = ProfileForm(request.POST, request.FILES) if form.is_valid() and profile_form.is_valid(): user = form.save() profile = profile_form.save(commit=False) profile.user = user profile.save() username = form.cleaned_data.get('username') messages.success(request, f'Your account has been created! You are now able to log in') return redirect('login') else: form = UserRegisterForm() profile_form = ProfileForm() return render(request, 'class/register.html', {'form': form, 'profile_form': profile_form})
解决方案
这个错误的核心是class_profile数据表未被创建,按以下步骤修复:
执行数据库迁移命令
你已经定义了Profile模型,但未将模型同步到数据库。在项目根目录下运行:python manage.py makemigrations python manage.py migrate第一条命令为
Profile模型生成迁移文件,第二条命令将迁移应用到数据库,自动创建class_profile表(class是你的应用名称)。检查应用是否加入INSTALLED_APPS
确保class应用已添加到settings.py的INSTALLED_APPS列表:INSTALLED_APPS = [ # 其他默认应用 'class', ]若未添加,先补上再重新执行迁移命令。
重置迁移文件(如果上述步骤无效)
删除class/migrations目录下除__init__.py外的所有文件,然后重新运行makemigrations和migrate命令,强制生成新的迁移并同步数据库。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

