IntegrityError-userprofile.u_id不能为NULL,django用户注册



我正在尝试使用Django UserProfile功能注册用户。我有一个扩展的UserProfile模型。我的文件如下所示。我得到"accounts_userprofile.u_id可能不是NULL",我在保存表单时尝试使用"commit=false",但它不起作用。我的父模型的字段设置为NULL=True,blank=True。我已经删除了该表并添加了几次,但都没有起作用。请帮助。提前感谢

我的型号如下:

class UserBase(models.Model):
class Meta:
abstract = True
u_id = models.IntegerField(null = True,blank = True)
email = models.CharField(max_length=200, null = True,blank = True)
website=models.CharField(max_length=200, null = True, blank = True)
age = models.IntegerField(blank = True, null = True)
location = models.CharField(max_length= 200, null=True, blank = True)
username = models.CharField(max_length = 100, null = True, blank = True)

UserProfile模型如下:

class UserProfile(UserBase):
user = models.ForeignKey(User, null= True, blank = True, unique = True)
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0]) 
def __unicode__(self):
return "User Profile for: " + self.user.username

def create_user_profile(发送方,**kw):user=kw如果kw[已创建]:up=UserProfile(user=user)

up.save()

postrongave.connect(create_user_profile,sender=用户,dispatch_uid="user_create_profile")

我的注册视图如下:

def-register(请求,template_name="registration/register.html"):if request.method=="POST":

postdata = request.POST.copy()
form = UserCreationForm(postdata)
if form.is_valid(): 
un = postdata.get('username','')
pw = postdata.get('password1','')
from django.contrib.auth import login, authenticate
new_user = authenticate(username=un, password=pw)
form.save()
#if new_user and new_user.is_active:
#login(request, new_user)
#url = urlresolvers.reverse('my_account')
#return HttpResponseRedirect(url)

其他:form=UserCreationForm()page_title='用户注册'返回render_to_response(template_name,locals(),context_instance=RequestContext(request))>

来自Django文档:

https://docs.djangoproject.com/en/1.4/ref/models/fields/

Field.unique

如果为True,则该字段在整个表中必须是唯一的。

这是在数据库级别和模型验证中强制执行的。如果你尝试将具有重复值的模型保存在唯一字段中django.db.IntegrityError将由模型的save()方法引发。

此选项对除ManyToManyField和文件字段。

您告诉UserProfiles UserProfiles.u_id是唯一的,它不是(blanks/null)。所以你得到了错误。您可能需要考虑将u_id更改为AutoField primary_key。然后使用模型将它们连接起来。ForeignKey("UserBase")

相关内容

  • 没有找到相关文章

最新更新