Django扩展注册用户模型

2024-04-23 11:05:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我对django真的很陌生。我有一个模型和下面这样的两个表单来扩展用户模型。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)

Tags: nameselfformnumberreturnifmodelsrequest