首页 > 解决方案 > 名字和姓氏在管理面板中不可见

问题描述

我正在使用 Django-Registration,为什么管理面板中的姓和名是空的是空的,我不知道为什么。

lass UserRegistrationForm(forms.Form):
      firstname = forms.CharField(label='First Name',max_length=50)
      lastname = forms.CharField(label='Last Name',max_length=50)
      username = forms.CharField(label='Username',max_length=50)
      email = forms.EmailField()
    password1=forms.CharField(label='Password',max_length=50,min_length=5)
password2 = forms.CharField(label='Confirm Password',max_length=50,min_length=5)


views.py
def user_registration(request):
form = UserRegistrationForm()
if request.method == 'POST':
    form = UserRegistrationForm(request.POST)
    if form.is_valid():
        username = form.cleaned_data['username']
        password = form.cleaned_data['password1']
        firstname = form.cleaned_data['firstname']
        lastname = form.cleaned_data['lastname']
        email = form.cleaned_data['email']
        user = User.objects.create_user(username,email=email, password=password)
        user.firstname = firstname
        user.lastname = lastname
        user.save()
        messages.success(request,'Thaks for registering {} .Enjoy unlimited access to our recipes .'.format(user.username))
        return HttpResponseRedirect(reverse('accounts:login'))
else:
    form = UserRegistrationForm()   
return render(request,'accounts/register.html',{'form': form})

标签: djangodjango-modelsdjango-formsdjango-views

解决方案


默认User模型提供first_namelast_name属性。您应该在保存数据时使用这些属性。

def user_registration(request):
form = UserRegistrationForm()
if request.method == 'POST':
    form = UserRegistrationForm(request.POST)
    if form.is_valid():
        username = form.cleaned_data['username']
        password = form.cleaned_data['password1']
        firstname = form.cleaned_data['firstname']
        lastname = form.cleaned_data['lastname']
        email = form.cleaned_data['email']
        user = User.objects.create_user(username,email=email, password=password)
        user.first_name = firstname  # use the correct attribute here.
        user.last_name = lastname  # use the correct attribute here.
        user.save()
        messages.success(request,'Thaks for registering {} .Enjoy unlimited access to our recipes .'.format(user.username))
        return HttpResponseRedirect(reverse('accounts:login'))
else:
    form = UserRegistrationForm()   
return render(request,'accounts/register.html',{'form': form})

文档


推荐阅读