【问题标题】:Problems Saving Data to Database将数据保存到数据库时出现问题
【发布时间】:2016-02-01 12:06:05
【问题描述】:

这是我的观点.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 和 last_name 之外的所有内容都打印到数据库中??? (用户名、邮箱、年级、毕业年份、密码全部保存)

编辑:这是我的用户信息

 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)

【问题讨论】:

  • UserInfo 模型是什么样的?
  • 只需添加User.objects.create_user(first_name=form.cleaned_data['first_name'], ...
  • 我想将它添加到数据库中,而不是让它成为登录用户@sobolevn 的一部分

标签: django django-forms django-views


【解决方案1】:

在提供的代码中,您永远不会将first_namelast_name 保存为UserUserInfo

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()

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2020-09-16
    相关资源
    最近更新 更多