NOT NULL约束失败:用户_profile.user_id文件

2024-05-13 23:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用django allauth进行用户注册和登录,但我只有一个称为“单击完成”的步骤,这应该是完成他们的配置文件时,用户注册。但我有以下错误。 首先,我已经试过了

模型.py

class CustomUser(AbstractUser):

def __str__(self):
    return self.email


class Profile(models.Model):
    user = models.OneToOneField('users.CustomUser', on_delete=models.CASCADE)

    def __str__(self):
        return self.user.email

表单.py

^{pr2}$

视图.py

def profile(request):

if request.method == 'POST':
    form = ProfileForm(request.POST)

    if form.is_valid():
        form.save()
        redirect('dashboard')
else:
    form = ProfileForm()
return render(request, 'users/profile.html', {'form':form})

我得到了这个错误

Traceback (most recent call last):


File "C:\Users\Zako5\.virtualenvs\inventory_project-V0PloAkR\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Zako5\.virtualenvs\inventory_project-V0PloAkR\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Zako5\.virtualenvs\inventory_project-V0PloAkR\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Zako5\inventory_project\users\views.py", line 13, in profile
    form.save()
  File "C:\Users\Zako5\.virtualenvs\inventory_project-V0PloAkR\lib\site-packages\django\forms\models.py", line 458, in save
    self.instance.save()
  File "C:\Users\Zako5\.virtualenvs\inventory_project-V0PloAkR\lib\site-packages\django\db\backends\utils.py", line 99, in execute
    return super().execute(sql, params)
  File "C:\Users\Zako5\.virtualenvs\inventory_project-V0PloAkR\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\Zako5\.virtualenvs\inventory_project-V0PloAkR\lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: NOT NULL constraint failed: users_profile.user_id
[06/Apr/2019 11:50:13] "POST /account/profile HTTP/1.1" 500 150456

我已经找到了一些答案,但没有一个对我的案子有效。 任何帮助都将不胜感激!在


Tags: djangoinpyselfformprojectrequestlib
1条回答
网友
1楼 · 发布于 2024-05-13 23:38:33

您需要在Profile对象中添加user字段的值。在

为此,在保存配置文件之前,可以从request.user附加用户。使用form.save(commit=False)将返回尚未保存在数据库中的概要文件实例,然后将用户添加到该概要文件实例中。在

例如:

from django.contrib.auth.decorators import login_required

@login_required
def profile(request):

    if request.method == 'POST':
        form = ProfileForm(request.POST)
        if form.is_valid():
            profile = form.save(commit=False)
            profile.user = request.user
            profile.save()
            return redirect('dashboard')
     else:
        form = ProfileForm()
     return render(request, 'users/profile.html', {'form':form})

相关问题 更多 >