2015-11-01 49 views
1

這是我的views.py問題將數據保存到數據庫

 def signup(request): 
      print "signup" 
      if request.method == 'POST': 
       print "post signup" 
       form = RegisterForm(request.POST) 
       try: 
        if form.is_valid(): 
         print form.cleaned_data 
         u = User.objects.create_user(form.cleaned_data['emailid'], form.cleaned_data['emailid'], form.cleaned_data['passwd1']) 
         ui = UserInfo() 
         ui.user = u 
         ui.class_of = form.cleaned_data['gradyear'] 
         ui.grade = form.cleaned_data['grade'] 
         ui.balance = 0 

         ui.save() 

,並在我的forms.py我有:

class RegisterForm(forms.Form): 
     GRADE_CHOICES = ( 
        (9,'9'), (10,'10'), (11,'11'), (12,'12') , 
       ) 
     curr_year = date.today().year 
     GRAD_YEAR_CHOICES = ( 
        (curr_year,curr_year), (curr_year+1,curr_year+1), (curr_year+2,curr_year+2), (curr_year+3,curr_year+3) , 
        ) 
     first_name = forms.CharField(max_length = 25) 
     last_name = forms.CharField(max_length = 25) 
     emailid = forms.EmailField() 
     passwd1 = forms.CharField(max_length=100,widget=forms.PasswordInput) 
     passwd2 = forms.CharField(max_length=100,widget=forms.PasswordInput) 
     gradyear = forms.ChoiceField(choices=GRAD_YEAR_CHOICES) 
     grade = forms.ChoiceField(choices=GRADE_CHOICES) 

     def clean(self): 
      cleaned_data = super(RegisterForm, self).clean() 

      if cleaned_data['passwd1'] != cleaned_data['passwd2']: 
       raise forms.ValidationError({'passwd1':['Password do not match']}) 

      if User.objects.filter(email=cleaned_data['emailid']).count(): 
       raise forms.ValidationError({'emailid':['Email already taken ']}) 

      return cleaned_data 

爲什麼一切打印到數據庫除了FIRST_NAME和姓氏? ? (用戶名,電子郵件,等級,gradyear和密碼都保存)

編輯:這是我的UserInfo

class UserInfo(models.Model): 
    user = models.OneToOneField(User, related_name='user_infos') 
    class_of = models.IntegerField() 
    #username = user.username 
    #fname = user.fname 
    #lname = user.last_name 
    #email = user.email 
    #Staff = user.is_staff 
    pub_date = models.DateTimeField(auto_now=True) 
    grade = models.IntegerField() 
    balance = models.DecimalField(max_digits=6, decimal_places=2) 
    #first_name = models.CharField(max_length = 25) 
+0

是什麼用戶信息模型是什麼樣子? – user1797792

+0

只需添加'User.objects.create_user(first_name = form.cleaned_data ['first_name'],...' – sobolevn

+0

我想將它添加到數據庫中,而不是使其成爲登錄用戶的一部分@sobolevn –

回答

1

在提供的代碼,你永遠保存first_namelast_nameUserUserInfo

def signup(request):,這條線之後:

u = User.objects.create_user(form.cleaned_data['emailid'], form.cleaned_data['emailid'], form.cleaned_data['passwd1']) 

嘗試包括這樣的:

u.first_name = form.cleaned_data['first_name'] 
u.last_name = form.cleaned_data['last_name'] 
u.save() 
+1

這工作完美!非常感謝! –