Я первый на 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']
И это мои взгляды .py file
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