UserProfile注册会删除所有行

时间:2011-10-19 08:53:14

标签: django registration

我创建了一个用户注册视图,就是这样:

def register(request):
if request.method == 'POST':
    data = request.POST.copy() # so we can manipulate data  
    # random username
    data['username'] = hashlib.md5( data['email'] ).hexdigest()
    data['username'] = data['username'][0:30]
    #data['username'] = ''.join([choice(letters) for i in xrange(30)])
    form = RegisterForm(data)   
    if form.is_valid():
        new_user = form.save()
        #UserProfile.objects.create(user=new_user)
        return HttpResponse("Thanks for Registering")       
else:
    form = RegisterForm()

return render_to_response("CTUser/register.html", { 'form': form, })

当我取消注释UserProfile行时:

#UserProfile.objects.create(user=new_user)

电子邮件和密码已正确保存,但当它存在时,所有信息都将被删除。我在这里做错了吗?

这是UserProfile类:

class UserProfile(User):
user = models.OneToOneField(User)
#user = models.ForeignKey(User, unique=True)

#profile sub URL
pagelink = models.CharField(max_length=40)

#one or many albums
albums = models.ManyToManyField(Album)

UPDATE(11年10月19日): 这是注册表格功能:

class RegisterForm(UserCreationForm):   
email = forms.EmailField(label = "Email Address", max_length=75)  

class Meta:
    model = User
    #exclude = ['username',]
    fields = ("username", "email")  

def clean_email(self):
    email = self.cleaned_data["email"]
    try:
        user = User.objects.get(email=email)
        raise forms.ValidationError("This email address already exists. Did you forget your password?")
    except User.DoesNotExist:
        return email

def save(self, commit=True):
    user = super(UserCreationForm, self).save(commit=False)
    user.set_password(self.cleaned_data["password1"])
    user.email = self.cleaned_data["email"]
    user.is_active = True # change to false if using email activation
    if commit:
        user.save()
    return user

1 个答案:

答案 0 :(得分:0)

检查new_user是否包含要保存的所有数据。粘贴RegisterForm代码。

修改

尝试改变:

user = super(UserCreationForm, self).save(commit=False)

进入

user = super(RegisterForm, self).save(commit=False)
相关问题