如何在 Django 的 UserCreationForm 中扩展字段?
How to extend field in UserCreationForm in django?
我一直在尝试在 UserCreationForm 中添加一个 phone 号码字段,以便用户在注册时提供其 phone 号码,但不幸的是 phone 号码未存储。它接受注册页面上的 Phone 号码,但不在网页上显示 phone 号码。我认为它不是存储。
forms.py
class myCreateForm(UserCreationForm):
ph= forms.CharField(max_length=400, required=True, label='Phone')
class Meta:
model = User
fields = ['first_name', 'last_name' ,'username', 'email', 'password1', 'password2','ph']
def save(self, commit=True):
user = super(myCreateForm, self).save(commit=False)
user.ph = self.cleaned_data["ph"]
if commit:
user.save()
return user
views.py
def register(request):
form = myCreateForm()
if request.method == "POST":
form = myCreateForm(request.POST)
if form.is_valid():
form.save()
return redirect('loginPage')
return render(request , 'register.html', {'form' : form})
模板
{%for i in user%}
Hi {{i.first_name}}<br>
Username : {{i.username}}<br>
E-Mail : {{i.email}}<br>
Phone : {{i.ph}}<br>
{%endfor%}
但在我的网页上,它显示了除 phone 号码以外的所有内容。
请帮帮我
您需要扩展 Django 用户 model.See
Docs.
例如,让我们创建一个新模型 Profile
,它将与 django 用户模型
建立 OneToOne
关系
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = models.CharField(max_length=50..)
现在在你的视野中
form = myCreateForm(request.POST)
if form.is_valid():
user = form.save()
phone = form.cleaned_data.get('ph')
Profile.objects.create(user=user,phone=ph)
return redirect...
现在在模板中 {{i.profile.phone}}
将给出 phone 字段的结果。
我一直在尝试在 UserCreationForm 中添加一个 phone 号码字段,以便用户在注册时提供其 phone 号码,但不幸的是 phone 号码未存储。它接受注册页面上的 Phone 号码,但不在网页上显示 phone 号码。我认为它不是存储。
forms.py
class myCreateForm(UserCreationForm):
ph= forms.CharField(max_length=400, required=True, label='Phone')
class Meta:
model = User
fields = ['first_name', 'last_name' ,'username', 'email', 'password1', 'password2','ph']
def save(self, commit=True):
user = super(myCreateForm, self).save(commit=False)
user.ph = self.cleaned_data["ph"]
if commit:
user.save()
return user
views.py
def register(request):
form = myCreateForm()
if request.method == "POST":
form = myCreateForm(request.POST)
if form.is_valid():
form.save()
return redirect('loginPage')
return render(request , 'register.html', {'form' : form})
模板
{%for i in user%}
Hi {{i.first_name}}<br>
Username : {{i.username}}<br>
E-Mail : {{i.email}}<br>
Phone : {{i.ph}}<br>
{%endfor%}
但在我的网页上,它显示了除 phone 号码以外的所有内容。
请帮帮我
您需要扩展 Django 用户 model.See Docs.
例如,让我们创建一个新模型 Profile
,它将与 django 用户模型
OneToOne
关系
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = models.CharField(max_length=50..)
现在在你的视野中
form = myCreateForm(request.POST)
if form.is_valid():
user = form.save()
phone = form.cleaned_data.get('ph')
Profile.objects.create(user=user,phone=ph)
return redirect...
现在在模板中 {{i.profile.phone}}
将给出 phone 字段的结果。