gpt4 book ai didi

django - 使用(contrib.auth.models用户)的用户注册页面,但面临“非空约束错误”

转载 作者:行者123 更新时间:2023-12-03 09:01:40 25 4
gpt4 key购买 nike

我是第一个使用Django的人。
我仅在面对失败的NOT NULL约束时制作注册表单:blog_userprofile.user_id。
我一直在努力弄清楚,但我做不到。感谢您的任何帮助:)

这是我的models.py文件

from django.db import models
from django.urls import reverse
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User,on_delete=models.PROTECT,blank=True)

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

这是我的forms.py文件
from django import forms
from .models import Post,Comment,UserProfile
class UserProfileForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
username = forms.CharField(max_length=200)
email = forms.EmailField()

class Meta():
model = UserProfile
fields = ['username','email','password']

这是我的views.py文件
from django.shortcuts import render
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import HttpResponseRedirect,HttpResponse
from django.urls import reverse_lazy,reverse
from django.views.generic import (TemplateView,ListView,DetailView)
from django.views.generic.edit import CreateView,UpdateView,DeleteView
from .models import Post,Comment,UserProfile
from .forms import PostForm,CommentForm,UserProfileForm

def register(request):

registered = False

if request.method == 'POST':
user_form = UserProfileForm(request.POST)
if user_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()

registered = True
return HttpResponseRedirect(reverse('blog:user_login'))
else:
print('unvalid imformation')
else:
user_form = UserProfileForm()

return render(request,'register/registration.html',{'user_form':user_form, 'registered':registered})

这个评论出现了
IntegrityError at /signup/
NOT NULL constraint failed: blog_userprofile.user_id

最佳答案

如果您从数据库中获得现有用户,则可以使用

user_form = UserProfileForm(request.POST, instance=a)

或者您可以尝试此代码
if request.method == 'POST':
# If you get an existing user from your database you can use
#user_form = UserProfileForm(request.POST, instance=a)
user_form = UserProfileForm(request.POST)
if user_form.is_valid():
user = user_form.save(commit=False)
user.set_password(user.password)
user.save()

registered = True
return HttpResponseRedirect(reverse('blog:user_login'))

关于django - 使用(contrib.auth.models用户)的用户注册页面,但面临“非空约束错误”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59969018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com