如何将PhoneNumberField数据保存到数据库?

问题描述

我的forms.py文件

class CreateUserForm(UserCreationForm):
    phone=PhoneNumberField()
    class Meta:
        model = User
        fields = ['username','email','password1','password2','phone']
        widgets={
            'username':forms.TextInput(attrs={'placeholder':"Username"}),'email':forms.TextInput(attrs={'placeholder':"Email Address"}),'password1': forms.PasswordInput(attrs={'placeholder': 'Your Password'}),'password2': forms.PasswordInput(attrs={'placeholder': 'Confirm Password'}),'phone':PhoneNumberField(),}

我的models.py文件

class CustomerReg(models.Model):
    user=models.OneToOneField(User,null=True,blank=True,on_delete=models.CASCADE)
    name=models.CharField(max_length=200,null=True)
    email=models.EmailField(max_length=254)

def create_profile(sender,**kwargs):
    if kwargs['created']:
        user_profile=CustomerReg.objects.create(user=kwargs['instance'])

post_save.connect(create_profile,sender=User)

我的views.py文件

def registerPage(request):
    if request.user.is_authenticated:
        return redirect('form')
    else:
        form=CreateUserForm()

        if request.method == 'POST':
            form = CreateUserForm(request.POST)
            if(form.is_valid()):
                form.save()
                user=form.cleaned_data.get['username']
                user=User.objects.get(username=user)
                phone=form.cleaned_data.get['phone']
                user.phone_number=phone
                user.save()
                return redirect('login')

        context = {'form': form}
        return render(request,'customer/register.html',context)

点击注册页面后会显示错误

AttributeError at /register/
'str' object has no attribute 'User'

所以我无法从表单中保存数据,因此必须创建新的“自定义用户模型”以在注册页面上保存用户的电话号码吗?

我的管理员。py

from django.contrib import admin
from .models import *
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .forms import UserChangeForm,UserCreationForm
# Register your models here.

admin.site.register(Customer)

class UserAdmin(BaseUserAdmin):
    form = UserChangeForm
    add_form = UserCreationForm
    list_display = ('email','phone')

admin.site.register(User,UserAdmin)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)