django - 扩展用户注册模型

时间:2017-10-17 08:51:15

标签: python django model

我对django真的很新。我有一个模型和下面的2个表格扩展用户模型。 UserProfile链接到用户模型,这是我的额外字段。我看过很多帖子但仍然无法解决。我想在提交注册表格时使用下面列出的电话号码等附加参数保存个人资料,我花了好几个小时试图让它工作,非常感谢您的帮助:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length = 50)
    phone_number = models.CharField(max_length=12)

#In form.py

class RegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ['username',
                  'first_name',
                  'last_name',
                  'email',
                  'password1',
                  'password2'
                  ]
    def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.email = self.cleaned_data['email']

        if commit:
            user.save()

        return user

class RegistrationFormProfile(forms.ModelForm):
    phone_number = forms.CharField(max_length = 12)

    class Meta:
        model = UserProfile
        fields = [
              'phone_number',
              ]
    def save(self, commit=True):

        profile.phone_number = self.cleaned_data['phone_number']

        if commit:
            profile.save()

        return profile
#In views.py
def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        profileForm = RegistrationFormProfile(request.POST)
        if form.is_valid():
            user = form.save()
            if(profileForm.is_valid()):
                profileForm.save()
                return redirect('accounts/profile')
        else:
            return redirect('accounts/wrong')
    else:
        form = RegistrationForm()
        profileForm = RegistrationFormProfile()
        args = {'form' : form, 'profileForm' : profileForm}
        return render(request, 'users/reg_form.html', args)

0 个答案:

没有答案
相关问题