【发布时间】:2016-03-31 16:48:20
【问题描述】:
所以我一直在尝试 Django 身份验证。我尝试创建一个注册视图,它实现了两个模型 django.contrib.auth.models.User 和一个与用户共享 OneToOne 关系的自定义模型。
这是相关代码
models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class UserProfile(models.Model):
user = models.OneToOneField(User)
SapID = models.IntegerField(default=60000000000)
def __str__(self):
return self.user.username
views.py
from django.shortcuts import render
from .forms import UserFormRegister, UserForm
# Create your views here.
def register(request):
if request.method == 'POST':
user_form = UserForm(data = request.POST)
users_form = UserFormRegister(data = request.POST)
if user_form.is_valid() and users_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
userregister = users_form.save()
userregister.user = user
userregister.save()
return redirect('/#/')
else:
user_form = UserForm()
users_form = UserFormRegister()
return render(request, 'register.html',{'user_form':user_form, 'users_form':users_form},)
forms.py
from django import forms
from django.contrib.auth.models import User
from .models import UserProfile
class UserForm(forms.ModelForm):
password = forms.CharField(widget = forms.PasswordInput())
class Meta:
model = User
fields=('username','password','email','first_name','last_name',)
class UserFormRegister(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('SapID', )
SapID 是每个用户将拥有的唯一 ID。
现在,当我尝试注册时,会创建用户对象,但不会创建用户配置文件对象。我收到一条错误消息,提示“NOT NULL 约束失败:foo_userprofile.user_id”。我错过了什么?
【问题讨论】:
标签: python django django-models django-admin django-views